Httpclient.SendAsync 在将 StreamContent 发送到服务器之前将其加载到内存中
Httpclient.SendAsync loads StreamContent into memory before sending it to the server
我正在尝试将大型视频上传到服务器,但无论我做什么,如果我使用 Httpclient.SendAsync(HttpResponseMessage) 发送我已分配给 HttpResponseMessage 的内容所有 headers 等等,整个内容将被加载到内存中。
但我使用的是 HttpClient.PostAsync(uri, HttpResponseMessage.Content),它会正常上传,不会将内容加载到流中。
是否有任何解决方法,而不是仅仅切换到 PostAsync?它没有为我提供 SendAsync 提供的可能性,所以我宁愿不这样做。
示例:
{
var multiForm = new MultipartFormDataContent(UploadId);
var fileStream = File.OpenRead(videoPath);
var streamContent = new StreamContent(fileStream);
multiForm.Add(streamContent, "video", Path.GetFileName(fs.Name));
var request = GetHttpReqeustMessage[Method.Post, uri];
request.Content = multiForm;
var result = client.SendAsync(request);
}
我太笨了。我忘记了我正在跟踪每个 httprequest 消息的日志,所以我会打印请求中的所有内容,包括整个视频的字节数。我要飞,远方。
我正在尝试将大型视频上传到服务器,但无论我做什么,如果我使用 Httpclient.SendAsync(HttpResponseMessage) 发送我已分配给 HttpResponseMessage 的内容所有 headers 等等,整个内容将被加载到内存中。
但我使用的是 HttpClient.PostAsync(uri, HttpResponseMessage.Content),它会正常上传,不会将内容加载到流中。
是否有任何解决方法,而不是仅仅切换到 PostAsync?它没有为我提供 SendAsync 提供的可能性,所以我宁愿不这样做。
示例:
{
var multiForm = new MultipartFormDataContent(UploadId);
var fileStream = File.OpenRead(videoPath);
var streamContent = new StreamContent(fileStream);
multiForm.Add(streamContent, "video", Path.GetFileName(fs.Name));
var request = GetHttpReqeustMessage[Method.Post, uri];
request.Content = multiForm;
var result = client.SendAsync(request);
}
我太笨了。我忘记了我正在跟踪每个 httprequest 消息的日志,所以我会打印请求中的所有内容,包括整个视频的字节数。我要飞,远方。