gpt4 book ai didi

c# - 上传和接收使用 ASP.NET 进行 http 压缩的大文件会给出 "unexpected end of mime multipart stream"

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:55 27 4
gpt4 key购买 nike

我很难尝试在 ASP.NET 中通过 HTTP 文件上传来发送大文件。

目标是传输大于2GB的内容,压缩以节省带宽。发送 3GB 未压缩的文件效果很好,所有文件都被接收并正确保存在磁盘上。然而,当我使用压缩(gzip 或 deflate)时,我从接收 API 收到以下错误:

Unexpected end of MIME multipart stream. MIME multipart message is not complete.

问题是只有当发送大请求时(大约 300MB 是上限),我才会得到异常。上传 200MB 压缩文件效果很好。

上传代码如下:

using (var client = new HttpClient())
{
using (var content = new MultipartFormDataContent())
{
client.BaseAddress = new Uri(fileServerUrl);
client.DefaultRequestHeaders.TransferEncodingChunked = true;

CompressedContent compressedContent = new CompressedContent(content, "gzip");

var request = new HttpRequestMessage(HttpMethod.Post, "/api/fileupload/")
{
Content = compressedContent
};

var uploadResponse = client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result;
}
}

CompressedContent类是来自 WebApiContrib 助手集的类

这里是接收端

// CustomStreamProvider is an implementation to store the files uploaded on the disk
var streamProvider = new CustomStreamProvider(uploadPath);
var res = await Request.Content.ReadAsMultipartAsync(streamProvider);
streamProvider.FileData.Select(file => new FileInfo(file.LocalFileName)).Select(fi => fi.FullName)

你能告诉我问题出在哪里吗?为什么较大的内容(大于 300MB)似乎压缩不当,而较小的内容传输得很好?

最佳答案

您是否以 block 的形式压缩文件?如果您能够发送未压缩的文件,那么很明显,问题出在您的压缩例程上。使用开箱即用的 gzip 或 Deflate 对文件大小有限制。因此,您需要分块压缩。

提示:调试压缩例程。尝试压缩您的文件并将其保存到硬盘上,看看它是否可读。

看看这个article

关于c# - 上传和接收使用 ASP.NET 进行 http 压缩的大文件会给出 "unexpected end of mime multipart stream",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29420388/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com