【问题标题】:File Streaming upload via Web API to a StreamReader通过 Web API 将文件流式上传到 StreamReader
【发布时间】: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


【解决方案1】:

async void 更改为async Task

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    相关资源
    最近更新 更多