none
Comment attribuer imageUrl aà une image à aprtir d'un "input type=file" ou d'un "FileUpload" control RRS feed

  • Question

  •     Bonsoir ,
    J'aimerais avoir votre aide pour accomplir mon   trucs sur une application .net .
     J'ai un control FileUpload   dans un deatilsview pour uploader des images, et je veut que lors de l'insertion d'un nouvel enregistrement, le nom du fichier soit ecrit dans un champ de la base de données .

    Le probléme est que l'image est uploadé avec un nom unique mais son nom n'est pas enregistré sur la BD 

    merci  

    • Déplacé Alex Petrescu lundi 7 juin 2010 13:46 question d'asp.net (Origine :Accès aux données avec .NET)
    vendredi 4 juin 2010 22:01

Réponses

  • Et l'écriture dans la base se fait où ?

    Commencer déjà par :

      FileUpload FileUpload1 = (FileUpload)DetailsView1.FindControl("FileUpload1");
        // //pour le chargement
        if (FileUpload1.HasFile)
        {
          // Nom uniquement
          string name = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);
          FileUpload1.SaveAs(Server.MapPath("../Images/" + name));
        }
    }

    Mettre un point d'arrêt et vérifier déjà que la variable "name" est correcte. Ensuite ne reste plus qu'à l'enregistrer dans la base (je ne crois pas que ce soit ce qui pose problème, le problème était l'utilisation de FileInfo sur un fichier n'existant pas pour récupérer son nom).

    mardi 8 juin 2010 10:55
    Modérateur
  • merci  beaucoup  mon probleme  etait sur   l 'utilisation  du   FileInfo   maintenant  tout  marche 

    merci   

    • Marqué comme réponse diengkals mardi 8 juin 2010 23:10
    mardi 8 juin 2010 23:10

Toutes les réponses

  • Bonjour,

    Pouvez-vous montrer le code qui pose problème ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    samedi 5 juin 2010 19:02
    Modérateur
  • voici  le  code   mais  si  je  clicke  sur  l valider  il  va  me  signaler  que  le  champs  est  vide  ça  veut  dire  qu il  ne  recuperer  pas  le  noms  du  fichier  



     protected void DetailsView1_PageIndexChanging(object sender, DetailsViewPageEventArgs e)
        {

            FileUpload image = (FileUpload)DetailsView1.FindControl("FileUpload1");
            if (image.HasFile)
            {


                //Récupérer le chemin du fichier à charger
                string name = image.PostedFile.FileName;
                //Utiliser la classe FileInfo pour extraire le nom du fichier 
                //à charger du chemin complet => file.Name
                FileInfo file = new FileInfo(name);
                //Charger (Upload) le fichier sur le serveur web dans le répertoire "Images"
                image.SaveAs(Server.MapPath("../Images/" + file.Name));




            }  

    merci   
           
    samedi 5 juin 2010 20:12
  • Bonjour,

    voici  le  code   mais  si  je  clicke  sur  l valider  il  va  me  signaler  que  le  champs  est  vide  ça  veut  dire  qu il  ne  recuperer  pas  le  noms  du  fichier
    Pouvez-vous être plus explicit ?

    La classe FileInfo ne sert à rien dans votre cas. Utilisez directement :

    image.SaveAs(Server.MapPath("../Images/" + image.PostedFile.FileName));

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    samedi 5 juin 2010 20:22
    Modérateur
  •  bon voici ce  que  je  veu   faire,  j ai  veux  alimenter  une  table (album)  dans  une  base  de  donnée  qui  contient comme  champs  id_album, titre, id_artiste , date_sortie, nbre_morceaux  et  image_album .  j utilise  le  control  DetailsViews et  FileUpload  pour  le  champs  image  ,  j  alimente  cette  table  a  partir  d une  procedure  que   j  ai  definie , bon  moi  je  trouve  probleme  au  niveau  de  l image  tous  les  autre  champs  ne  cause pas   de  problme. pour  charger  le  fichier    image  j ai  definie  la  methode  ci dessus   et  l erreur  me gere  que  le champs  est  vide  .  

    merci 

    samedi 5 juin 2010 20:51
  • Bonjour,

    et  l erreur  me gere  que  le champs  est  vide
    Quelle erreur ? Quel champ ? Partez du principe que l'on est pas devant votre ordinateur et que l'on connait rien à votre projet !

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    dimanche 6 juin 2010 07:25
    Modérateur
  • au  faite  je parle  toujours  du champ  image,   comme  je  vous  l ai dit  en  haut   je  veux  alimenter  ma  table  album  qui  contient  titre_album  , nom_chanteur  et  le champ  image , j utilise  le  control  DetailsVails  et  FileUpload pour  faire  l affaire  ,  et  cette  table  est  alimenter  a partir  d une  procédure    que  j  ai  défini.  maintenant  pour  uploder  mon image  dans  la  base  de donnée   j ai  defini  la  procedure  suivante:

           protected void DetailsView1_PageIndexChanging(object sender, DetailsViewPageEventArgs e)

        {

            FileUpload image = (FileUpload)DetailsView1.FindControl("FileUpload1");
            if (image.HasFile)
            {


                //Récupérer le chemin du fichier à charger
                string name = image.PostedFile.FileName;
                //Utiliser la classe FileInfo pour extraire le nom du fichier 
                //à charger du chemin complet => file.Name
             
                //Charger (Upload) le fichier sur le serveur web dans le répertoire "Images"
              image.SaveAs(Server.MapPath("../Images/" + image.PostedFile.FileName));

            }

    ce  qui  cause  probleme  c  est    au  niveau  du  champ  image  , on me  signal  toujours   que  le  champ  image  est  vide  comme  erreur  .  je ne  sais pas    si  j ai mal  défini ma fonction ou  non .

    merci   
    dimanche 6 juin 2010 09:44
  • Bonjour,

    Pour extraire le nom du fichier, utiliser http://msdn.microsoft.com/fr-fr/library/system.io.path.getfilename(VS.80).aspx.

    FileInfo permet de travailler sur un fichier ce qui pose problème car ce fichier n'existe pas sur le serveur.
    IO.Path permet de manipuler le nom indépendamment de l'existance ou non du fichier.

    Attention : dans le saveAs on utilise également PostedFile.FileName, le nom du fichier qui risque donc d'être le nom complet sur le client et donc le dossier ne sera pas forcément celui attendu (même si cela marche dans IE8 car IE8 ne transmet plus maintenant que le nom du fichier et non plus le chemin complet). 

     

    lundi 7 juin 2010 10:42
    Modérateur
  • merci  pour  votre  aide  ,  est  ce  que  vous  pourriez  me  donner  des  explication  plus  claires  car  la je  suis  totalement    perdu    ou  meme  me dire  ce  ke  je  doit  modifier  sur  mon code   car  j  essai  de  lire  mais  je  comprend  rien 

    voici  ce  que  j ai  fait  :

     

     

      protected void Button1_Click(object sender, EventArgs e)

        {

     

     

            FileUpload FileUpload1 = (FileUpload)DetailsView1.FindControl("FileUpload1");

            //  //pour le chargement

            if (FileUpload1.HasFile)

            {

                string name = FileUpload1.PostedFile.FileName;

                FileUpload1.SaveAs(Server.MapPath("../Images/" + FileUpload1.PostedFile.FileName));

     

               // FileUpload1.SaveAs(Server.MapPath("~/Images/" + file.Name));

                //  // name.ImageUrl = "~/Images/" + file.Name;

     

            }

     

    }

    mon probleme est  que  le   nom  du fichier  n  est  pas  enregistrer  dans  la  base  donnée  mais c est  enregistré  dans  le dossier.

    merci  d  avantage 

    lundi 7 juin 2010 13:57
  • Et l'écriture dans la base se fait où ?

    Commencer déjà par :

      FileUpload FileUpload1 = (FileUpload)DetailsView1.FindControl("FileUpload1");
        // //pour le chargement
        if (FileUpload1.HasFile)
        {
          // Nom uniquement
          string name = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);
          FileUpload1.SaveAs(Server.MapPath("../Images/" + name));
        }
    }

    Mettre un point d'arrêt et vérifier déjà que la variable "name" est correcte. Ensuite ne reste plus qu'à l'enregistrer dans la base (je ne crois pas que ce soit ce qui pose problème, le problème était l'utilisation de FileInfo sur un fichier n'existant pas pour récupérer son nom).

    mardi 8 juin 2010 10:55
    Modérateur
  •  

    Bonjour,

     

    Pour récupérer le nom du fichier vous pouvez également utiliser FileUpload.FileName qui vous donne seulement le nom, sans chemin complet.

     

    Pour le problème avec la base de données, je n’ai pas tout à fait compris ce que vous voulez faire. Est-ce que vous voulez également enregistrer le nom et le chemin dans une base de données ? Avez-vous commence à écrire du code pour cela ?

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    mardi 8 juin 2010 11:09
  • merci  beaucoup  mon probleme  etait sur   l 'utilisation  du   FileInfo   maintenant  tout  marche 

    merci   

    • Marqué comme réponse diengkals mardi 8 juin 2010 23:10
    mardi 8 juin 2010 23:10