【发布时间】:2023-04-04 20:31:02
【问题描述】:
我正在使用 Resumeable.js(client) 和 C# MVC/WebAPI(Server) 编写文件上传服务。
在客户端,Resumeable.js 为上传的文件创建一个 blob,并构造一个多部分请求以将一些文件信息(名称、大小等)与 blob 一起包装。
在服务器端,我们使用 ReadAsMultipartAsync() 来解析多部分请求,并使用 ReadAsByteArrayAsync() 从文件中获取字节。
var parts = await Request.Content.ReadAsMultipartAsync();
...
// if parts contains file
request.ChunkContent = currentPart.Contents.ReadAsByteArrayAsync().Result;
对于纯文本文件可以正常工作,但是,当我使用此文件上传服务上传 12kb .docx 文件时,ReadAsByteArrayAsync() 返回的字节数组与原始文件数据不同,前 16 个字节相同并且数组的大小增加到 18000+。 我检查了我们发送到服务器的字节在 Fiddler 中都是正确的。 使用 utf-8 编码并不能解决问题,有没有人遇到过同样的问题?
【问题讨论】:
-
试试 await 而不是 .Result
标签: c# asp.net-web-api file-upload multipartform-data content-type