【发布时间】:2014-05-02 21:12:11
【问题描述】:
基本上,我想将文件流式传输到 Web API,一旦进入 Web API 控制器,我想通过流读取器将数据传递到较低级别的逻辑。我尝试了从另一个 SO 帖子中找到的以下代码并进行了一些修改,但我得到了:
异步模块或处理程序在异步完成时完成 操作仍在等待中。
public async void Put(int id, HttpRequestMessage request)
{
if (!Request.Content.IsMimeMultipartContent())
throw new InvalidOperationException();
var provider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(provider);
var file = provider.Contents.First();
var filename = file.Headers.ContentDisposition.FileName.Trim('\"');
var buffer = await file.ReadAsByteArrayAsync();
var stream = new MemoryStream(buffer);
using (var s = new StreamReader(stream))
{
saveFile.Execute(id, s);
}
}
我对其他解决方案持开放态度,只要我在数据传入时进行流式传输。我是 await 和 async 的新手,我可能犯了一个基本错误。有什么想法吗?
【问题讨论】:
-
我是否正确地说整个文件在某个时刻都在内存中?如果我没记错的话,我猜它是保存在 var "buffer" 中的。
标签: c# asp.net .net asp.net-web-api