2009-04-17 12 views
0

J'ai googlé ce code pour télécharger un fichier avec MVC. Mais quand on interroge les formes ["FileBlob"] c'est null quand je parcours un fichier et soumet le formulaire ?????MVC Problème en essayant de télécharger le fichier

Malcolm

EDIT: J'ai ajouté une zone de texte à la forme et je peux obtenir cette belle valeur. Juste le fichier de type d'entrée ne fonctionne pas?

bool errors = false; 
    //this field is never empty, it contains the selected filename 
    if (string.IsNullOrEmpty(forms["FileBlob"])) 
    { 
     errors = true; 
     ModelState.AddModelError("FileBlob", "Please upload a file"); 
    } 
    else 
    { 
     string sFileName = forms["FileBlob"]; 
     var file = Request.Files["FileBlob"]; 
     //'file' is always null, and Request.Files.Count is always 0 ??? 
     if (file != null) 
     { 
     byte[] buf = new byte[file.ContentLength]; 
     file.InputStream.Read(buf, 0, file.ContentLength); 
     //do stuff with the bytes 
     } 
     else 
     { 
     errors = true; 
     ModelState.AddModelError("FileBlob", "Please upload a file"); 
     } 
    } 
    if (errors) 
    { 
     return ShowTheFormAgainResult(); 
    } 
    else 
    { 
     return View(); 
    } 
} 

Répondre

2

Woah qui est une configuration confusion, personnellement, je ne compliquer les choses comme ça avec tous ceux si des déclarations et des valeurs nulles font via la validation jquery, vous pouvez également faire la validation côté serveur. Au lieu de vérifier if(errors) do if(ModelState.IsValid){ return View();} ici est une meilleure interprétation

http://msdn.microsoft.com/en-us/library/dd410404.aspx

cette façon, vous pouvez vous débarrasser de cette configuration bool.

Vérifiez également ici

http://blogs.msdn.com/stcheng/archive/2009/03/20/asp-net-how-to-implement-file-upload-and-download-in-asp-net-mvc.aspx

pour un implemenation plus facile de votre structure de téléchargement. Je l'ai utilisé et n'ai pas rencontré de problèmes.

0

This answer pourrait aider. Aussi, je suggère de ne pas poster d'autres champs de formulaire avec le fichier de téléchargement. Faites-le séparément dans une action séparée. Bien sûr, cela donne à l'utilisateur 2 étapes, mais croyez-moi, ça vaut la simplicité de votre côté.

Questions connexes