2017-03-01 96 views
0

我正在使用ngResource和Angular將文件上傳到ASP.NET Web服務。使用WebApi上傳大文件

它一切正常,直到我嘗試超過一定大小(約50MB)的文件。在某個尺寸之後的某個位置,FromBody參數沒有被綁定,並且我得到一個DocumentDTO對象引用。

任何想法如何解決它?

在我的web.config我有以下設置:

maxAllowedContentLength="500000000" 

maxRequestLength="200000" 

在我的控制,我有:

[HttpPost, Route("{id:Guid}")] 
public async Task<IHttpActionResult> Insert([FromUri]Guid id, [FromBody]DocumentDTO documentDTO) 
{ 
    //... 

DocumentDTO是:

public class DocumentDTO 
{ 
    [Required] 
    public Guid Id { get; set; } 

    [DisplayFormat(ConvertEmptyStringToNull = false)] 
    [MaxLength(250)] 
    public string FileName { get; set; } 

    [Required] 
    public string Content { get; set; } 

    [MaxLength(250)] 
    public string ContentType { get; set; } 

} 

在我的角度控制器,我有這樣的代碼:

vm.document.$save(
      data => { 

       notifications.success("The document has been uploaded to the repository.", "Upload Succeeded"); 

      }, 
      err => { 

       errorService.handleApiError(err, "document", "upload"); 

      }) 
      .finally(() => vm.loading = false); 

vm.document.content值被做調用一個FileReaderreadAsArrayBuffer設置。

就像我說的:這一切工作正常在一定的文件大小下。 FileReader是否有限制並且沒有正確設置文件內容,或者WebApi對模型綁定有限制?

+0

嘗試使用郵遞員或另一個HTTP客戶端來測試文件上傳到服務器。 – Padraic

回答

-1

請更新maxRequestLength。以下是2GB文件的示例。

<system.web> 
    <httpRuntime maxRequestLength="2097152" /> 
</system.web> 
+0

我不確定你是否讀過我設置的maxRequestLength =「200000」。我的文件大小將低於150MB,因此應該足夠了。 – Sean

+0

啊,是的,我錯過了閱讀,試圖在這裏複製。另一種選擇是spiting和合並文件[link] https://www.codeproject.com/Articles/1034347/Upload-large-files-to-MVC-WebAPI-using-partitionin –