C# 将无缓冲区的数据从MultipartMemoryStreamProvider传输到输出流
我在做一种代理。客户端将文件上载到WebAPI方法,此WebAPI方法将文件发送到其他HTTP位置。我有以下代码:C# 将无缓冲区的数据从MultipartMemoryStreamProvider传输到输出流,c#,asp.net,asp.net-web-api,upload,proxy,C#,Asp.net,Asp.net Web Api,Upload,Proxy,我在做一种代理。客户端将文件上载到WebAPI方法,此WebAPI方法将文件发送到其他HTTP位置。我有以下代码: [HttpPost] public async Task mPost(string id) { var provider = new MultipartMemoryStreamProvider(); var r = Request.Content.ReadAsMultipartAsync(provider).ContinueWith(async t =&g
[HttpPost]
public async Task mPost(string id)
{
var provider = new MultipartMemoryStreamProvider();
var r = Request.Content.ReadAsMultipartAsync(provider).ContinueWith(async t =>
{
var file = provider.Contents.First();
var buffer = await file.ReadAsByteArrayAsync();
var stream = new MemoryStream(buffer);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.ExpectContinue = false;
using (var content = new StreamContent(stream))
{
using (var req = new HttpRequestMessage(HttpMethod.Put, "target_url"))
{
req.Content = content;
using (HttpResponseMessage resp = client.SendAsync(req).Result)
{
resp.EnsureSuccessStatusCode();
}
}
}
}
});
它可以工作,但我不喜欢的是在某个时刻(var buffer=await file.ReadAsByteArrayAsync();
)服务器内存中有所有文件数据
如何将数据直接从输入流传输到输出,而不将其保存在内存缓冲区中?一个选项是使用
WebRequest
而不是HttpClient
,并将文件
流直接复制到请求中
要异步请求流,请使用和发送内容-
有很多这样执行帖子的例子,例如,你找到问题的答案了吗?