如何修改UploadFiles任务以支持接收所有类型文件?
解决方法
你的问题出在RequestImageFileAsync这个方法上——它是Blazor专门用来处理图片的API,会强制将上传的文件转换为指定格式的图片文件,所以非图片类型的文件(比如PDF、TXT)用这个方法肯定会失败。要支持所有文件类型,直接读取原始文件的流即可,不用经过图片转换步骤。
修改后的代码如下:
private async Task UploadFiles(InputFileChangeEventArgs inputFileChangeEventArgs) { _CarregaFoto = true; var MAXALLOWEDSIZE = 60000000; var originalFile = inputFileChangeEventArgs.File; // 获取原始文件,不做图片转换 var buffer = new byte[originalFile.Size]; await originalFile.OpenReadStream(MAXALLOWEDSIZE).ReadAsync(buffer); AnexoDenunciaModel _novaFoto = new AnexoDenunciaModel(); _novaFoto.imagem = buffer; _novaFoto.id_ocorre = id; _novaFoto.nome = originalFile.Name; _novaFoto.Denunciante = true; await _db.InsertAnexoDenuncia(_novaFoto); _CarregaFoto = false; await LeTabelas2(); }
关键改动说明:
- 移除了
fileFormat变量和RequestImageFileAsync调用,直接使用inputFileChangeEventArgs.File获取原始上传文件 - 读取原始文件的流,保留文件的原始格式和内容
- 确保buffer大小匹配原始文件的实际大小
这样修改后,不管是图片、PDF、TXT还是其他类型的文件,都能正常读取并上传到数据库了。
内容的提问来源于stack exchange,提问作者Thiago Fontoura
相关产品推荐
相关产品推荐

