在 Blazor Server 中使用 EditForm 上传文件?

Upload files using EditForm in Blazor Server?

我正在使用 Blazor 服务器端并想上传一些文件。我不需要任何进度条,只想在提交 EditForm 时上传文件。到目前为止,我发现的流行解决方案(Synfusion Blazor 文件上传,Steve Sandersons File Upload)会在选择文件后上传文件,而不是在 EditForm 提交时上传。对于我的简单案例,我不能只在 HTML 中使用 input type="file" 吗?我将如何使用 EditForm 执行此操作以及如何在服务器端接收文件?

Steve Sandersons File Upload 有效,在

void HandleFileSelected(IFileListEntry[] files)
{
    // Do something with the files, e.g., read them
}

只需存储 files 并在提交表单时访问 IFileListEntry.Data。无需立即读取 HandleFileSelected.

中的流

Steve Sanderson 的文件上传可以,但不是必需的。我自己的代码处理 Change 事件中的文件上传,但我很确定您可以使用类似以下的方式延迟上传:

<InputFile OnChange="HandleFileUpload" multiple></InputFile>

@code {
    InputFileChangeEventArgs FileArgs {get; set;}

 async Task HandleFileUpload(InputFileChangeEventArgs e)
{
    FileArgs = e;
}

然后,只要您准备好实际处理文件,就可以继续处理参数,例如(例如,在您的表单提交方法中):

foreach (var imageFile in FileArgs.GetMultipleFiles(maxAllowedFiles))
{
    // Do file stuff
}