我的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>
}