IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

filestream et fileupload dans un formulaire


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 100
    Par défaut filestream et fileupload dans un formulaire
    bonjour à tous,

    dans mon formulaire de saisie l'utilisateur a accés au disque dur interne et externe de l'ordi pour choisir la piece jointe qu'il veut.

    La table dans laquelle les info saisie s'enregistre il y a un champs "piece_jointe" de type "varbinary"

    je voudrai donc inserer les info de la piece jointe dans ce champs mais je ne sais pas comment faire voici la parti du code concernant l'insertion de cette info:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     objParam = objCommand.Parameters.Add("@piece_jointe", SqlDbType.VarBinary)
            objParam.Value = FileUpload.ID
    mais j'ai une erreur qui dit:
    Échec de la conversion de la valeur de paramètre d'un String en un Byte[].
    je n'arrive pas a resoudre cela...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je ne comprends pas trop ton code.
    Tu veux mettre l'ID du control FileUpolad dans ta base?

    Tu devrais plutôt lire le fichier que tu as uploder et le passer à ton paramètre de requête

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 100
    Par défaut
    non non c'est pck je ne savait pas quoi mettre....

    oui c'est se que je veux faire de mettre le fichier dans ma base de donnée mais je ne sais pas comment faire enfet?

    aurais-tu une piste?

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Bonjour,

    là, tu tentes d'insérer dans ta BD l'ID de ton FileUpload.
    Il faut, dans l'ordre :
    - récupérer le chemin du fichier sélectionné par l'utilisateur dans le FileUpload
    - stocker le contenu de ce fileupload dans un tableau de bytes (byte[])
    - passer ce tableau de Byte en paramètre de ta commande.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(FileUpload.HasFile)
       {
          byte[] blob= FileUpload.FileBytes;
    objParam = objCommand.Parameters.Add("@piece_jointe", SqlDbType.VarBinary, blob.length)
            objParam.Value = blob;
       }

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 100
    Par défaut
    non enfet je veut passer le contenu de mon fichier uploadé dans ma base de donnée donc j'ai écrit cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     objParam = objCommand.Parameters.Add("@piece_jointe", SqlDbType.VarBinary)
            objParam.Value = FileUpload.FileContent
    mais j'ai cette erreur:
    Échec de la conversion de la valeur de paramètre d'un HttpInputStream en un Byte[].

  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Oui, j'ai bien compris et c'est ce que fait le code que je t'ai donné...

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 100
    Par défaut
    ah d'accord j'avais pas compris...

    mais blob est une variable à déclarer?

    et il me signale une erreur sur byte[]

  8. #8
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Tu as fait un simple copier/coller ?

    Parce que le code donné par calagan99 est en C#...

    Ce qui en vb donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If (FileUpload.HasFile) Then
        Dim blob As Byte() = FileUpload.FileBytes
        objParam = objCommand.Parameters.Add("@piece_jointe", SqlDbType.VarBinary, blob.length)
        objParam.Value = blob
    End If

  9. #9
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 100
    Par défaut
    oui je l'avais converti une fois l'erreur signaler...

    mais j'ai toujour cette erreur:
    Échec de la conversion de la valeur de paramètre d'un HttpInputStream en un Byte[].
    que je ne comprend pas...

  10. #10
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 100
    Par défaut
    c'est bon j'ai resolu l'éreur mais voici lerreur maintenant:
    Procedure or function 'spd_piece_insert' expects parameter '@piece_jointe', which was not supplied.
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Protected Sub enregistrer_Click(ByVal sender As Object, ByVal e As EventArgs) Handles enregistrer.Click
     
            '-------------------------------------        
            '   Variables declaration
            '-------------------------------------
     
            Dim objCommand As SqlCommand
     
            Dim objParam As SqlParameter
     
            Dim dt_KeywordsID As DataTable = New DataTable("piece")
     
            Dim dtc_KeywordsID As DataColumn
     
            Dim myConnection As SqlConnection = New SqlConnection("data source=UC033\DEV;integrated security=SSPI;initial catalog=BUDGET2")
     
            '-------------------------------------
            '   Create a connection to SQL Server
            '-------------------------------------        
     
            objCommand = New SqlCommand("dbo.spd_piece_insert", myConnection)
     
            objCommand.CommandType = CommandType.StoredProcedure
     
            objCommand.Connection.Open()
     
     
            '-------------------------------------
            '   Create parameters for sp
            '-------------------------------------  
     
     
            objParam = objCommand.Parameters.Add("@id_type_piece", SqlDbType.Int)
            objParam.Value = lst_typePiece.SelectedValue
     
            objParam = objCommand.Parameters.Add("@id_piece_anterieur ", SqlDbType.VarChar)
            objParam.Value = lst_id_piece.SelectedValue
     
            If (FileUpload.HasFile) Then
                Dim blob As Byte() = FileUpload.FileBytes
                objParam = objCommand.Parameters.Add("@piece_jointe", SqlDbType.VarBinary, blob.Length)
                objParam.Value = blob
            End If
     
            objParam = objCommand.Parameters.Add("@commentaire ", SqlDbType.VarChar)
            objParam.Value = commentaire.Text
     
            objParam = objCommand.Parameters.Add("@date_creation", SqlDbType.DateTime)
            objParam.Value = ConfirmationDate.Text
     
            objParam = objCommand.Parameters.Add("@createur_piece ", SqlDbType.Char, 10)
            objParam.Value = createur.Text
     
     
            '-------------------------------------
            '   Prepare table as parameter
            '------------------------------------- 
     
            dtc_KeywordsID = New DataColumn()
     
            dtc_KeywordsID.ColumnName = "id_piece"
     
            dt_KeywordsID.Columns.Add(dtc_KeywordsID)
            '-------------------------------------
            '   Store procedure execution
            '-------------------------------------  
     
            objCommand.ExecuteNonQuery()
     
            '-------------------------------------
            '   Close the connexion object
            '-------------------------------------  
     
            objCommand.Connection.Close()
     
            '---------------------------------------------------------------
            'direction vers le formulaire de saisie du detail de la piéce
            '---------------------------------------------------------------
            Response.Redirect("DetailPiece.aspx")
     
        End Sub

  11. #11
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 100
    Par défaut
    tout fonctionne
    mais je voulais savoir ou vont les fichier uploadé?

    car enfet dans ma base de donnée il é afficher:<binary data>?

  12. #12
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Citation Envoyé par cyriane Voir le message
    tout fonctionne
    mais je voulais savoir ou vont les fichier uploadé?
    Dans ta base de données...

    Citation Envoyé par cyriane Voir le message
    car enfet dans ma base de donnée il é afficher:<binary data>?
    C'est normal. Les fichiers sont stockés dans ta base sous leur forme binaire. Ils ne sont pas visualisables en tant que tels dans la BD.

    Une solution alternative aurait pu consister à :
    - uploader les fichiers vers un répertoire de ton choix
    - stocker les chemins de ce fichiers dans la base

  13. #13
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 100
    Par défaut
    bonjour,
    voila se que j'ai fais:

    -j'ai créer un repertoir"budgetfile" dans les propriété de ma base de données
    qui contiendra tous les filestream uploadé par l'utilisateur.

    mais comment faire pour que les fichiers uploadé se dirige directement vers ce repertoire?

  14. #14
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Bonjour,

    là, franchement, tu confonds tout...

    1- ta base de données (plus précisément le champ "piece_jointeé" de ta table "piece") ne stocke pas des FileStream. Elle en stocke le contenu : des tableau d'octets

    2- ces tableaux d'octests SONT les fichiers. Simplement, ils ne le sont pas sous leur forme graphique. C'est leur représentation binaire qui est stockée

    3- je ne sais pas où tu as crées un répertoire, mais
    j'ai créer un repertoir"budgetfile" dans les propriété de ma base de données
    qui contiendra tous les filestream uploadé par l'utilisateur.
    ne veut rien dire. Un répertoire sur la base de donnée, déjà, je ne comprends pas. Qui plus est, tes fichiers sont déjà dans ta base avec la procédure que tu as mise en place, pourquoi donc vouloir les stocker dans un répertoire ?

  15. #15
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 100
    Par défaut
    oui,
    mais alors l'utilisateur joint ses fichier mais comment peut-il les réutiliser?
    c'est ça que je ne comprend pas enfait...

    Edit
    et calagan99
    tu me dit:
    Une solution alternative aurait pu consister à :
    - uploader les fichiers vers un répertoire de ton choix
    - stocker les chemins de ce fichiers dans la base
    donc dans l'activation des filestream dans sqlserver configuration manager

    j'ai activer FILESTREAM pour l'accès en continu aux E/S de fichier. j'ai entré le nom du partage Windows dans la zone Nom de partage Windows qui est:budgetfiles....
    voila
    je ne sais pas si j'ai été claire?

Discussions similaires

  1. Response.BinaryWrite dans un formulaire
    Par faamugol dans le forum ASP
    Réponses: 4
    Dernier message: 12/05/2004, 13h45
  2. Forcer la saisie en MAJ dans un Formulaire
    Par lolos dans le forum IHM
    Réponses: 4
    Dernier message: 12/08/2003, 11h57
  3. Réponses: 3
    Dernier message: 19/03/2003, 16h19
  4. Réponses: 2
    Dernier message: 12/02/2003, 16h26
  5. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo