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

问题描述

我正在使用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
}