正在上传 asp.net 核心 3.1 Razor
Uploading asp.net core 3.1 Razor
我正在尝试在 ASP.NET 核心 3.1 中上传文件,但在我的 Post 中我没有收到文件。
那 count = 0 是我总是得到的。
@cshtml
<input asp-for="app.FormFile" id="input-2" name="input2[]" type="file" class="file" multiple data-show-upload="true" data-show-caption="true">
@cshtml.cs
public async Task<IActionResult> OnPostAsync(List<IFormFile> files)
{
long size = files.Sum(f => f.Length);
foreach (var formFile in files)
{
if (formFile.Length > 0)
{
var filePath = Path.GetTempFileName();
using (var stream = System.IO.File.Create(filePath))
{
await formFile.CopyToAsync(stream);
}
}
}
// Process uploaded files
// Don't rely on or trust the FileName property without validation.
return Ok(new { count = files.Count, size });
}
在 ASP.NET 核心 2.0 中这工作正常!怎么了?
参数名称是 files
,但您明确将输入名称设置为 input2[]
,因此它们不匹配。 ASP.NET Core 不会尝试解释您已经上传了一些文件,因此您可能希望它们继续使用此参数。如果它找不到将数据绑定到的东西(按名称),它就会丢弃它并继续前进。
名称应 files
以匹配参数名称:name="files"
.
even if I pass the name it still came with count = 0 <input asp-for="Laudos.FormFile" id="files" name="files" type="file" class="file" multiple data-show-upload="true" data-show-caption="true">
您可以尝试为您的 <form>
标签指定 multipart/form-data
的编码类型 (enctype),如下所示。
<form method="post" enctype="multipart/form-data">
<input asp-for="Laudos.FormFile" id="input-2" name="files" type="file" class="file" multiple data-show-upload="true" data-show-caption="true">
<input type="submit">
</form>
测试结果
我正在尝试在 ASP.NET 核心 3.1 中上传文件,但在我的 Post 中我没有收到文件。
那 count = 0 是我总是得到的。
@cshtml
<input asp-for="app.FormFile" id="input-2" name="input2[]" type="file" class="file" multiple data-show-upload="true" data-show-caption="true">
@cshtml.cs
public async Task<IActionResult> OnPostAsync(List<IFormFile> files)
{
long size = files.Sum(f => f.Length);
foreach (var formFile in files)
{
if (formFile.Length > 0)
{
var filePath = Path.GetTempFileName();
using (var stream = System.IO.File.Create(filePath))
{
await formFile.CopyToAsync(stream);
}
}
}
// Process uploaded files
// Don't rely on or trust the FileName property without validation.
return Ok(new { count = files.Count, size });
}
在 ASP.NET 核心 2.0 中这工作正常!怎么了?
参数名称是 files
,但您明确将输入名称设置为 input2[]
,因此它们不匹配。 ASP.NET Core 不会尝试解释您已经上传了一些文件,因此您可能希望它们继续使用此参数。如果它找不到将数据绑定到的东西(按名称),它就会丢弃它并继续前进。
名称应 files
以匹配参数名称:name="files"
.
even if I pass the name it still came with count = 0
<input asp-for="Laudos.FormFile" id="files" name="files" type="file" class="file" multiple data-show-upload="true" data-show-caption="true">
您可以尝试为您的 <form>
标签指定 multipart/form-data
的编码类型 (enctype),如下所示。
<form method="post" enctype="multipart/form-data">
<input asp-for="Laudos.FormFile" id="input-2" name="files" type="file" class="file" multiple data-show-upload="true" data-show-caption="true">
<input type="submit">
</form>
测试结果