【问题标题】:BlazorInputFile - Synchronous reads are not supportedBlazorInputFile - 不支持同步读取
【发布时间】:2021-04-12 23:26:09
【问题描述】:

我正在尝试使用 SteveSanderson 的 BlazorInputFile package 在 Blazor WASM 应用程序中上传文件。 (服务器/客户端设置)。我按照他blog post.上的说明安装了包

我的 api 以 byte[] 形式接收文件,因此我将文件从 Stream 转换为 byte[],然后发布到服务器中的我的 API 端点。

private async Task Upload(InputFileChangeEventArgs e)
{
    MemoryStream ms = new MemoryStream();
    e.File.OpenReadStream().CopyTo(ms);
    var bytes = ms.ToArray();
    UploadFile file = new UploadFile
    {
        FileName = e.File.Name,
        FileContent = bytes,
        Size = e.File.Size,
        ContentType = e.File.ContentType
    };
        await Http.PostAsJsonAsync<UploadFile>("/api/uploadfile", file);
        await OnInitializedAsync();
}

不幸的是,我不断收到来自 BlazorInputFile 的错误/异常,上面写着“不支持同步读取”。

我已尝试搜索错误并进行了各种修复(浏览器广告拦截器可能被阻止等),但没有一个修复了问题。

【问题讨论】:

    标签: c# blazor


    【解决方案1】:

    看起来问题是您使用的是同步版本的 Stream.CopyTo 方法,这就是您收到有关不支持同步读取的错误消息的原因。 我相信将该行更改为:

    await e.File.OpenReadStream().CopyToAsync(ms);
    

    很可能会解决您的问题。

    【讨论】:

    • 哇,这么快。我已经敲了几个小时试图找出问题所在。非常感谢! (答案有效,我的上传现在工作正常)
    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 2014-10-11
    • 2011-12-27
    相关资源
    最近更新 更多