Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

BlazorInputFile - Synchronous reads are not supported

Tags:

c#

blazor

I am trying to use SteveSanderson's BlazorInputFile package to upload files in a Blazor WASM app. (Server/Client setup). I installed the package according to the instructions on his blog post.

My api takes in the file in a byte[] so I am converting the file from a Stream to byte[], and then posting to my API endpoint in the Server.

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();
}

Unfortunately I keep getting an error/exception from BlazorInputFile which says "Synchronous reads are not supported".

I have tried to search the error and had various fixes (Browser adblocker could be blocking etc) but not of them has fixed the problem.

like image 342
mashsf Avatar asked Jan 25 '23 09:01

mashsf


1 Answers

Looks like the issue is you are using the synchronous version of Stream.CopyTo Method which is the reason you are getting the error message about synchronous reads not being supported. I believe changing that line to:

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

Will most likely solve your issue.

like image 110
daddybacon Avatar answered Feb 01 '23 07:02

daddybacon