在Blazor中进行文件上传可以使用IFormFile
对象。以下是一个示例解决方案:
@code {
private UploadModel uploadModel = new UploadModel();
private async Task HandleValidSubmit()
{
// 处理文件上传
// 可以在这里调用后端API来处理文件上传
// 例如:await httpClient.PostAsync("api/upload", uploadModel.File);
}
private async Task HandleFileSelected(InputFileChangeEventArgs e)
{
var file = e.File;
var buffer = new byte[file.Size];
await file.OpenReadStream().ReadAsync(buffer);
uploadModel.File = new System.IO.MemoryStream(buffer);
uploadModel.FileName = file.Name;
}
public class UploadModel
{
public Stream File { get; set; }
public string FileName { get; set; }
}
}
[HttpPost("api/upload")]
public async Task UploadFile(IFormFile file)
{
if (file == null || file.Length == 0)
return BadRequest("没有选择文件或文件为空");
// 处理文件上传
using (var stream = new MemoryStream())
{
await file.CopyToAsync(stream);
// 可以在这里保存文件到磁盘
// 例如:await File.WriteAllBytesAsync(filePath, stream.ToArray());
}
return Ok();
}
请注意,上述示例仅演示了如何在Blazor中进行文件上传,并将文件内容保存到内存流中。你可以根据需求将文件保存到磁盘或进行其他操作。