2010-11-20 5 views
1

Ceci est mon code. Je veux uplade 3 fichier dans ma base de donnéesTéléchargement de fichiers multiples à l'aide de Request.Files ["files"] MVC

première dans Voir j'écris ceci: <% en utilisant (Html.BeginForm (ActionName, contrôleur, FormMethod.Post, nouveau {enctype = "multipart/form-data"})) {%> ..... ....

ce qui est 3 fichier uplaoding:

<input type="file" name="files" id="FileUpload1" /> 
<input type="file" name="files" id="FileUpload2" /> 
<input type="file" name="files" id="FileUpload3" /> 

Dans le contrôleur j'utilise ce code:

IEnumerable<HttpPostedFileBase> files = Request.Files["files"] as IEnumerable<HttpPostedFileBase>; 
foreach (var file in files) 
{ 
byte[] binaryData = null; 
HttpPostedFileBase uploadedFile = file; 
if (uploadedFile != null && uploadedFile.ContentLength > 0){ 
binaryData = new byte[uploadedFile.ContentLength]; 
uploadedFile.InputStream.Read(binaryData, 0,uploadedFile.ContentLength); 
} 
} 

mais les fichiers retournent toujours NULL :(

s'il vous plaît aidez-moi, merci.

Répondre

4

Essayez ceci:

<% using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) {%> 
    <input type="file" name="files" id="FileUpload1" /> 
    <input type="file" name="files" id="FileUpload2" /> 
    <input type="file" name="files" id="FileUpload3" /> 
    <input type="submit" value="Upload" /> 
<% } %> 

et le contrôleur correspondant:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(IEnumerable<HttpPostedFileBase> files) 
    { 
     foreach (var file in files) 
     { 
      if (file.ContentLength > 0) 
      { 
       // TODO: do something with the uploaded file here 
      } 
     } 
     return RedirectToAction("Index"); 
    } 
} 

Il est un peu plus propre.

+0

Est-il nécessaire d'ajouter "IEnumerable fichiers" à actionResult en tant que paramètre? Je le fais mais toujours NULL – Negar

+0

Oui, de cette façon, vous n'avez plus besoin d'utiliser 'Request.Files' dans l'action. Le classeur par défaut fera l'affaire. Je ne sais pas pourquoi vous obtenez NULL. Ces entrées sont-elles à l'intérieur du formulaire? Quand j'ai testé mon code, j'ai pu récupérer les fichiers téléchargés. –

+0

Merci beaucoup Darin. ça fonctionne maintenant :) – Negar

Questions connexes