2017-04-10 94 views
1

我試圖撿起這個多部分帖子消息:讀取MIME多部分正文部分時出錯。 ---> System.Web.HttpException:客戶端斷開

POST /api/Image/Upload HTTP/1.1 Host: ServerName Content-Type: 
multipart/form-data; 
boundary=-------------Boundary----------35042EC1-790C-4CDD-8E21-66E6B1025C2D 
Connection: keep-alive Accept: */* filename: DefaultPrefix1.jpg 
User-Agent: KameraApp/1 CFNetwork/808.3 Darwin/16.3.0 Content-Length: 
5492253 Accept-Language: da-dk Accept-Encoding: gzip, deflate 

---------------Boundary----------35042EC1-790C-4CDD-8E21-66E6B1025C2D Content-Disposition: form-data; name='image'; 
filename="DefaultPrefix1.jpg" Content-Type: image/jpg 

Image Data 
End boundary 

這是我當前如何試圖做到這一點:

[RoutePrefix("api/Image")] 
    public class ImageController : ApiController 
    { 

     [HttpPost] 
     [Route("Upload")] 
     public async Task<IHttpActionResult> UploadAsync() 
     { 
      var uploadPath = HostingEnvironment.MapPath("/") + "Uploads"; 

      Directory.CreateDirectory(uploadPath); 

      var provider = new MultipartFormDataStreamProvider(uploadPath); 

      await Request.Content.ReadAsMultipartAsync(provider); 

      // Files 
      // 
      foreach (MultipartFileData file in provider.FileData) 
      { 
       Debug.WriteLine(file.Headers.ContentDisposition.FileName); 
       Debug.WriteLine("File path: " + file.LocalFileName); 
      } 

      // Form data 
      // 
      foreach (var key in provider.FormData.AllKeys) 
      { 
       foreach (var val in provider.FormData.GetValues(key)) 
       { 
        Debug.WriteLine(string.Format("{0}: {1}", key, val)); 
       } 
      } 

      return Ok("Working"); 
     } 
    } 

我也加入了這個文件

<system.web> 
    <compilation debug="true" targetFramework="4.5.2" /> 
    <httpRuntime targetFramework="4.5.2" maxRequestLength ="100000"/> 
    </system.web> 

我可以看到上傳到上傳文件夾中的文件的一部分的大小,但我不斷收到客戶端已斷開親瑕疵..我沒有這個問題對付一個PHP腳本,只是拿起文件,只是把它移動到我選擇的文件夾我不是一個PHP開發人員,所以我現在選擇了一些更舒適的東西來構建一個更高級的版本,但我很努力地收到文件..

任何建議,我做錯了什麼?

我已經嘗試恢復到在mac服務器上工作的PHP腳本,以查看它是否更基礎。當我在Windows服務器上運行PHP腳本時,我得到了

[星期二4月11日12時38分05秒2017年] [IP]:[端口號]無效請求(意外EOF)

當我在Mac上運行PHP腳本以進行應用程序的測試時,這並未發生。所以現在我的問題是,它可能是我在Web API上遇到的同一個EOF問題。以及如何解決EOF問題?我不認爲我可以在Windows中解決它,因爲Windows無法找到文件的結尾。 ?

回答

1

嘗試更換Content-Disposition=form-dataContent-Disposition=attachment

---------------Boundary----------35042EC1-790C-4CDD-8E21-66E6B1025C2D 
Content-Type: image/jpg 
Content-Disposition: attachment; filename="DefaultPrefix1.jpg"; name="image"