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

ASP.NET Discussion :

Impossible récupérer Fichier Photo avec un FileUpload! [Débutant]


Sujet :

ASP.NET

  1. #1
    Membre habitué Avatar de mumu27
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 213
    Points : 128
    Points
    128
    Par défaut Impossible récupérer Fichier Photo avec un FileUpload!
    Bonjour,

    je souhaite récupérer un fichier photo pour l'insérer dans une table.
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    <InsertItemTemplate>
                <td runat="server" style="">
                    <table>
                        <tr>
                            <td>
                                Civilité :
                            </td>
                            <td>
                                <asp:DropDownList ID="LstCivilites" runat="server" DataSourceID="DstCivilites" DataTextField="LibelleLong"
                                    DataValueField="Identifiant">
                                </asp:DropDownList>
                                <asp:EntityDataSource ID="DstCivilites" runat="server" ConnectionString="name=CS_LearningCompany"
                                    DefaultContainerName="LearningCompanyEntities" EnableFlattening="False" EntitySetName="Civilite">
                                </asp:EntityDataSource>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Nom :
                            </td>
                            <td>
                                <asp:TextBox ID="NomTextBox" runat="server" Text='<%# Bind("Nom") %>' />
                                <asp:RequiredFieldValidator ID="RqvNomTextBox" runat="server" ValidationGroup="InsertItem"
                                    ControlToValidate="NomTextBox" ErrorMessage="Veuillez saisir un nom." Text="*"></asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Prénom :
                            </td>
                            <td>
                                <asp:TextBox ID="PrenomTextBox" runat="server" Text='<%# Bind("Prenom") %>' />
                                <asp:RequiredFieldValidator ID="RqvPrenomTextBox" runat="server" ValidationGroup="InsertItem"
                                    ControlToValidate="PrenomTextBox" ErrorMessage="Veuillez saisir un prénom." Text="*"></asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Photo :
                            </td>
                            <td>
                                <asp:FileUpload ID="UplPhoto" runat="server" Width="200px" />
                                <asp:RequiredFieldValidator ID="RqvNomFichierPhotoTextBox" runat="server" ValidationGroup="InsertItem"
                                    ControlToValidate="UplPhoto" ErrorMessage="Veuillez sélectionner une photo."
                                    Text="*"></asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Email :
                            </td>
                            <td>
                                <asp:TextBox ID="EmailTextBox" runat="server" Text='<%# Bind("Email") %>' />
                                <asp:RequiredFieldValidator ID="RqvEmailTextBox" runat="server" ValidationGroup="InsertItem"
                                    ControlToValidate="EmailTextBox" ErrorMessage="Veuillez saisir un email." Text="*"></asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Téléphone :
                            </td>
                            <td>
                                <asp:TextBox ID="TelephoneTextBox" runat="server" Text='<%# Bind("Telephone") %>' />
                                <asp:RequiredFieldValidator ID="RqvTelephoneTextBox" runat="server" ValidationGroup="InsertItem"
                                    ControlToValidate="TelephoneTextBox" ErrorMessage="Veuillez saisir un téléphone."
                                    Text="*"></asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Prestataire :
                            </td>
                            <td>
                                <asp:CheckBox ID="IntervenantExterieurCheckBox" runat="server" Checked='<%# Bind("IntervenantExterieur") %>' />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Informations :
                            </td>
                            <td>
                                <asp:TextBox ID="InfosTextBox" runat="server" TextMode="MultiLine" Rows="3" Text='<%# Bind("Infos") %>' />
                                <asp:RequiredFieldValidator ID="RqvInfosTextBox" runat="server" ValidationGroup="InsertItem"
                                    ControlToValidate="InfosTextBox" ErrorMessage="Veuillez saisir un résumé de compétences."
                                    Text="*"></asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                &nbsp;
                            </td>
                        </tr>
                        <tr>
                            <td style="text-align: right;">
                                <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Valider"
                                    ValidationGroup="InsertItem" />
                            </td>
                            <td style="text-align: right;">
                                <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Annuler" />
                            </td>
                        </tr>
                    </table>
                </td>
            </InsertItemTemplate>
    Voici le message d'erreur:

    Impossible d'insérer la valeur NULL dans la colonne 'NomFichierPhoto', table 'LearningCompany.dbo.Formateur'. Cette colonne n'accepte pas les valeurs NULL. Échec de INSERT.
    L'instruction a été arrêtée.
    Je n'ai pas trop d'idées pour résoudre le problème!

    Merci d'avance de votre réponse.

    Mumu27!

  2. #2
    Membre habitué Avatar de mumu27
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 213
    Points : 128
    Points
    128
    Par défaut
    J'ai omis de dire qu'il 'a un évènement associé dans le code source, mais qu'il ne se déclenche pas:

    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
    protected void LstFormateurs_ItemInserting(object sender, ListViewInsertEventArgs e)
            {
                DropDownList LstCivilites;
                int iIdCivilite;
                FileUpload oFileUpload;
                Guid oIdPhoto;
                string sNomFichier;
     
                LstCivilites = (DropDownList)e.Item.FindControl("LstCivilites");
                iIdCivilite = int.Parse(LstCivilites.SelectedValue);
                e.Values["Civilite_Identifiant"] = iIdCivilite;
     
                oFileUpload = (FileUpload)e.Item.FindControl("UplPhoto");
                oIdPhoto = Guid.NewGuid();
                sNomFichier = oIdPhoto.ToString() + ".png";
                oFileUpload.SaveAs(Server.MapPath("~/Ressources/PortraitsFormateurs") + @"\" + sNomFichier);
                e.Values["NomFichierPhoto"] = sNomFichier;
            }

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    Dans le webcontrol FileUpload, il existe la propriété "HasFile" qui te permet de savoir si l'utilisateur a mis ou pas un fichier, au moins cela ne plantera pas.

    Avant de traiter les changements dans ton tableau (l'ajout d'une image), est-ce que tu as bien recharger ton listview (datasource et databiding)?
    Sans ça, tu ne peux pas voir les modifications.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Salut,

    si tu as la main sur la bdd tu peux ajouter une valeur par défaut au niveau sql à ton champs 'NomFichierPhoto'

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 34
    Points : 30
    Points
    30
    Par défaut
    Salut à toi,
    Déjà pour éviter le plantage:
    - Soit t'ajoute la propirété NULL dans script sql(ou autre) de la creation de ta table, à ta colonne.
    Ex:
    MaColonne NVarchar(50) NULL, (pour dire qu'on peut y insérér des null)
    - Ou bien t'ajoutes ce ptit test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    .....
    if(oFileUpload.HasFile)
    {
     oFileUpload.SaveAs(Server.MapPath("~/Ressources/PortraitsFormateurs") + @"\" + sNomFichier);
    .....
    Concernant ton problème, à mon avis il vient du fait que quand ton évenment ItemInserting se déclenche, il n'y a rien encore dans ton FieUpload.
    Essaie de déplacer ton code dans l'évènement ItemInserted.

  6. #6
    Membre habitué Avatar de mumu27
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 213
    Points : 128
    Points
    128
    Par défaut
    J'avais oublié d'initialiser la propriété OnItemInserting à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnItemInserting="LstFormateurs_ItemInserting"

    Merci pour votre aide.

    mumu27!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2010, 00h37
  2. Impossible de traiter un fichier rptdesign avec Jasper
    Par nico_somb dans le forum Jasper
    Réponses: 3
    Dernier message: 31/08/2006, 10h01
  3. Réponses: 10
    Dernier message: 27/07/2006, 14h09
  4. Réponses: 11
    Dernier message: 21/11/2005, 16h08
  5. Réponses: 4
    Dernier message: 25/08/2003, 09h02

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