提交包含多个选定文件的表单时出现400错误



我的ASP.NET Core 6应用程序有一个表单,用户可以在其中选择两个文件。当表格提交时,我收到一个400错误:

Failed to load response data: No resource with given identifier found.

如果只选择一个文件,则表单提交可以正常工作。

我想知道为什么会发生这种情况,以及如何解决。

HTML表单:

<form id="submitFileUploadForm" asp-page-handler="FileSelected" method="post" enctype="multipart/form-data">
<input id="selectFileInput" name="SelectedFiles" asp-for="newLayer.SelectedFiles" type="file" multiple>
</form>

页面模型:

public IActionResult OnPostFileSelected(List<IFormFile> SelectedFiles)
{
//do something with SelectedFiles
}

型号:

public class NewLayer
{
public IEnumerable<IFormFile>? SelectedFiles { get; set; }
//various other properties
}

提交表单处理程序:

//submit form on file select
$("#selectFileInput").change(function () {
document.getElementById('submitFileUploadForm').submit()
});

更新

在意识到你对我提供的代码也有同样的问题后,似乎是因为所选的文件。

默认情况下,ASP.NET Core的最大文件大小上载限制为30MB,因此,如果您试图上载2个16MB的文件,一个可以,但两个不行。您可以通过在Asp.Net核心中增加上传文件大小来配置最大限制


如果有帮助的话,我根据您提供的代码制作了这个快速而简单的剃须刀页面,希望您可以使用它来查看哪里出了问题。

Index.cshtml.cs

public class IndexModel : PageModel
{
public void OnPostFileSelected(IList<IFormFile> SelectedFiles)
{
}
public IEnumerable<IFormFile>? SelectedFiles { get; set; }
}

Index.cshtml

@page
@model IndexModel
<form id="submitFileUploadForm" asp-page-handler="FileSelected" method="post" enctype="multipart/form-data">
<input id="selectFileInput" name="SelectedFiles" asp-for="SelectedFiles" type="file" multiple>
</form>
@section Scripts {
<script type="text/javascript">
$("#selectFileInput").change(function () {
document.getElementById('submitFileUploadForm').submit()
});
</script>
} 

最新更新