2017-04-10 80 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"