【问题标题】:Error reading MIME multipart body part. ---> System.Web.HttpException: The client disconnected读取 MIME 多部分正文部分时出错。 ---> System.Web.HttpException:客户端断开连接
【发布时间】:2017-04-10 11:27:41
【问题描述】:

我正在尝试接收这条 Multipart Post 消息:

 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 脚本时,我得到了

[2017 年 4 月 11 日星期二 12:38:05] [IP]:[端口号] 无效请求(意外 EOF)

当我在 Mac 上运行 PHP 脚本以测试应用程序时,并没有发生这种情况。所以现在我的问题是它是否与我在 Web API 上遇到的 EOF 问题相同。以及如何解决 EOF 问题?我不认为我可以在 Windows 中解决它,因为 Windows 找不到文件的结尾。 ?

【问题讨论】:

    标签: c# asp.net asp.net-web-api asp.net-web-api2


    【解决方案1】:

    尝试将Content-Disposition=form-data 替换为Content-Disposition=attachment

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

    【讨论】:

      猜你喜欢
      • 2016-12-24
      • 2012-11-08
      • 2014-08-03
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 2016-10-08
      • 1970-01-01
      • 2022-07-12
      相关资源
      最近更新 更多