3

我有一個表單,用戶可以從中添加一個房產列表。除了用戶必須輸入的數據之外,用戶還可以上傳一些圖像。我使用HTML5多重屬性來允許用戶一次上傳多個文件。上傳多個文件 - MVC ..有一個總文件大小限制?

由於某種原因,當我上傳一張圖片時,我總是會觸發HttpPost添加方法。但是,當我嘗試上傳多個圖像時,該方法不會觸發。直到現在我沒有得到任何錯誤,所以我不知道我的實現有什麼問題。

HTML

@using (Html.BeginForm("AddProperty", "User", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    <fieldset> 
     <legend>Property</legend> 

     <div class="editor-label"> 
      Title 
     </div> 
     <div class="editor-field"> 
      <input type="text" name="title" /> 
     </div> 

     <div class="editor-label"> 
      Description 
     </div> 
     <div class="editor-field"> 
      <input type="text" name="desc" /> 
     </div> 

     @* ... more input fields... *@ 

     <div class="editor-label"> 
      Images 
     </div> 
     <div class="editor-field"> 
      <input type="file" multiple="multiple" name="file" /> 
     </div> 

     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 
} 

控制器

[HttpPost] 
public ActionResult AddProperty(FormCollection form, IEnumerable<HttpPostedFileBase> file) 
{ 
    Property p = new Property(); 
    p.Title = form["title"]; 
    p.Description = form["desc"]; 

    // ... setting Property fields 

    new PropertiesBL().AddProperty(p); 

    for (int i = 0; i < file.Count(); i++) 
    { 
     // ... loop and save uploaded file(s) 
    } 
} 

任何幫助,將不勝感激。

編輯 - 進一步測試

爲了測試我創建了一個新的視圖只包含文件上傳表單文件上傳。我試過上傳不同的文件類型。我注意到,當上傳例如10個文檔時,Upload方法被激發。但是,當試圖上傳3(大)圖像時,它不會觸發。我在想,上傳的字節總數有一些限制......我不確定這是否合理。

簡單測試

<form method="post" action="/Test/Upload" enctype="multipart/form-data"> 
    <input type="file" multiple="multiple" name="images" /> 
    <input type="submit" value="Upload" /> 
</form> 

[HttpPost] 
public ActionResult Upload(IEnumerable<HttpPostedFileBase> images) 
{ 
    return RedirectToAction("Index"); 
} 

我也試過單獨上傳多個文件。當我嘗試上傳3張大圖片(每張圖片大約2 MB)時,該方法不會觸發。我幾乎可以肯定,這是一個與總最大文件大小有關的問題。

<form method="post" action="/Test/Upload" enctype="multipart/form-data"> 
    <input type="file" name="image_1" /> 
    <input type="file" name="image_2" /> 
    <input type="file" name="image_3" /> 
    <input type="submit" value="Upload" /> 
</form> 

回答

1

問題出在可以上傳的最大字節數上。這可以通過在web.config文件中設置maxRequestLength來更改。

參考

How to upload large files using MVC 4?

代碼:

<system.web> 

    <httpRuntime targetFramework="4.5" 
     maxRequestLength="2147483647" 
     executionTimeout="1600" 
     requestLengthDiskThreshold="2147483647" /> 
    .... 

</system.web> 

爲鏈接的問題的答案,列出了<system.web>標籤下的以下但我只能在<system.webServer>添加它標籤:

<system.webServer> 

    <security> 
     <requestFiltering> 
      <requestLimits maxAllowedContentLength="2147483647" /> 
     </requestFiltering> 
    </security> 
    .... 

</system.webServer>