Estoy tratando de usar el paquete BlazorInputFile de SteveSanderson para cargar archivos en una aplicación Blazor WASM. (Configuración de servidor/cliente). Instalé el paquete de acuerdo con las instrucciones en su publicación de blog.
Mi API toma el archivo en un byte [], por lo que convierto el archivo de Stream a byte [] y luego lo publico en mi punto final de API en el servidor.
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(); }Desafortunadamente, sigo recibiendo un error/excepción de BlazorInputFile que dice "No se admiten las lecturas síncronas".
Intenté buscar el error y obtuve varias correcciones (el bloqueador de anuncios del navegador podría estar bloqueando, etc.) pero ninguno de ellos solucionó el problema.
Parece que el problema es que está utilizando la versión sincrónica del método Stream.CopyTo, que es la razón por la que recibe el mensaje de error sobre lecturas sincrónicas que no son compatibles. Creo que cambiar esa línea a:
await e.File.OpenReadStream().CopyToAsync(ms);Lo más probable es que resuelva tu problema.