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 MVC Discussion :

File Upload MVC 1 ne fonctionne pas


Sujet :

ASP.NET MVC

  1. #1
    Invité
    Invité(e)
    Par défaut File Upload MVC 1 ne fonctionne pas
    Bonjour,
    Je suis en train de réaliser une application MVC1 C#.NET 3.5.
    J'ai un formulaire assez conséquent dans le quel j'upload un fichier.
    Dans ma vue j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <% using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
       {
       //....
       <input type="file" id="PJ" name="PJ"/>
     
    }
           %>
    et dans mon contrôleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult CreerDemande(Demande dToCreate)
            {
                foreach (string file in Request.Files)
                {
                    //Process files
               }
     
           }
    Le problème est que Request.Files ne contient aucun element.
    J'ai également essayé de réaliser l'upload comme ça :
    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
     
     [AcceptVerbs(HttpVerbs.Post)]
     public ActionResult CreerDemande(HttpPostedFileBase file)
        {
     
    if (file != null && file.ContentLength > 0) 
            {
                // extract only the fielname
                var fileName = Path.GetFileName(file.FileName);
                // store the file inside ~/App_Data/uploads folder
                var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
                file.SaveAs(path);
            }
     
    }
    La valeur de HttpPostedFileBase est null et je ne comprend pas pourquoi.

    Merci à ceux qui sauront m'aider .

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Salut,

    Alors premier essai :

    Citation Envoyé par doRian07S Voir le message
    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
     
     [AcceptVerbs(HttpVerbs.Post)]
     public ActionResult CreerDemande(HttpPostedFileBase file)
        {
     
    if (file != null && file.ContentLength > 0) 
            {
                // extract only the fielname
                var fileName = Path.GetFileName(file.FileName);
                // store the file inside ~/App_Data/uploads folder
                var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
                file.SaveAs(path);
            }
     
    }
    Avec ta deuxième méthode essai de mettre le name de ta balise identique au nom de ton paramètre de ton Controller "file"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="file" name="file" />

  3. #3
    Invité
    Invité(e)
    Par défaut
    Pour le deuxième test, j'ai essayé en mettant le même nom, même resultat.
    Et avec ton exemple idem, la valeur de l'objet HttpPostedFileBase est null.
    En faite, le navigateur envoie bien l'objet (ou du moins sont nom) au serveur, puisque je le voit dans l'onglet Network du debugger de Chrome.
    On dirait que c'est le contrôleur qui n'arrive pas à récupérer l'objet ou bien entre l'envoie de l'objet et sa récupération il se passe un truc que je ne voit pas.
    Merci de ta réponse.

    NOTE : Nous n'utilisons pas le template MVC1 standard, on ne pouvait pas.
    Alors on est partie d'un template asp.net C# et on a ajouté les dlls : System.Web.Abstraction, System.Web.Mvc et System.Web.Routing.
    Il est fort probable que le problème vienne de là. Est-ce que vous savez quelle DLL il pourrait manquer au projet ?
    Merci d'avance.
    Dernière modification par Invité ; 10/06/2014 à 11h58.

  4. #4
    Membre averti Avatar de M_Makia
    Homme Profil pro
    dev
    Inscrit en
    Février 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 121
    Points : 338
    Points
    338
    Par défaut
    J'ai essayer avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @using (Html.BeginForm(null, null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <input type="file" id="PJ" name="monfichier" />
        <input type="submit" value="ok" />
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     [HttpPost]
            public ActionResult Index(HttpPostedFileBase monfichier)
            {
                return View();
            }
    Ca fonctionne correctement de mon coté.
    Peut être est-ce un prob lié à la version 1 de MVC

  5. #5
    Invité
    Invité(e)
    Par défaut
    Je reviens ici clôturer ma demande.
    Il y a une information que je ne définissait pas lors de l'appel de @using (Html.BeginForm(null, null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
    Le premier paramètre qui correspond à l'actionName, doit être définit pour pouvoir récupérer les pièces jointes !
    Merci de votre aide !

    Dorian

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

Discussions similaires

  1. Commande FILE et lib qui ne fonctionne pas
    Par gargle dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 16/10/2013, 11h51
  2. Réponses: 9
    Dernier message: 22/01/2012, 11h36
  3. Réponses: 3
    Dernier message: 15/01/2008, 12h45
  4. Réponses: 2
    Dernier message: 04/10/2007, 16h05
  5. Réponses: 4
    Dernier message: 03/04/2006, 08h50

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