2010-11-20 49 views
1

這是我的代碼。我想uplade 3文件到我的數據庫使用Request.Files [「files」]多個文件上傳MVC

首先在查看我寫這篇文章: <%使用(Html.BeginForm(Actionname,控制器,FormMethod.Post,新{ENCTYPE = 「的multipart/form-data的」}) ){%> ..... ....

,這是3檔uplaoding:

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

在控制器I使用此代碼:

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); 
} 
} 

但文件總是返回NULL :(

請幫助我,謝謝。

回答

4

試試這個:

<% 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" /> 
<% } %> 

和相應的控制器:

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"); 
    } 
} 

這是一個有點清潔。

+0

是否需要將「IEnumerable 文件」添加到actionResult作爲參數?我這樣做,但仍然是NULL – Negar 2010-11-20 11:03:29

+0

是的,這樣你不再需要在動作中使用'Request.Files'。默認的模型聯編程序將完成這項工作。我不知道你爲什麼得到NULL。這些輸入是在表單內嗎?當我測試我的代碼時,我能夠獲取上傳的文件。 – 2010-11-20 11:04:11

+0

非常感謝Darin。它現在可以工作:) – Negar 2010-11-20 11:26:30