提交包含多个选定文件的表单时出现 400 错误
400 error when submitting Form with multiple selected files
我的 ASP.NET Core 6 应用程序有一个表单,用户 select 有两个文件。提交表单时出现 400 错误:
Failed to load response data: No resource with given identifier found.
如果只有一个文件 selected,表单提交工作正常。
我想知道为什么会发生这种情况以及如何解决。
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 的文件,一个可以,但两个不行。您可以按照Increase upload file size in Asp.Net core
配置最大限制
如果有帮助,我根据您提供的代码制作了这个非常简单的快速剃须刀页面,希望您可以使用它来查看哪里出了问题。
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>
}
我的 ASP.NET Core 6 应用程序有一个表单,用户 select 有两个文件。提交表单时出现 400 错误:
Failed to load response data: No resource with given identifier found.
如果只有一个文件 selected,表单提交工作正常。
我想知道为什么会发生这种情况以及如何解决。
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 的文件,一个可以,但两个不行。您可以按照Increase upload file size in Asp.Net core
配置最大限制如果有帮助,我根据您提供的代码制作了这个非常简单的快速剃须刀页面,希望您可以使用它来查看哪里出了问题。
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>
}