提交包含多个选定文件的表单时出现 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>
}