我正在創建一個 ASP.NET Core 6 檔案上傳應用程式。這是我的代碼:
形式
<form asp-controller="Home" asp-action="UploadFiles" method="post" enctype="multipart/form-data" id="uploadForm">
<input type="file" class="form-control-file" multiple name="files">
@foreach (var folder in @Model.Folders)
{
<input id="filePathUrl" type="radio" asp-for="Folders" value="@folder" />
@folder
}
<button type="submit" class="btn custom-button">Upload Files</button>
jQuery
function processFiles(confirmOverwrite = false){
const filePath = $("#filePathUrl").val();
const fileList = $(".form-control-file")[0].files;
const files = Array.from(fileList);
let formData = new FormData();
files.forEach(file => formData.append("files[]", file));
const URL = '@Url.Action("UploadFiles", "Home")';
$.ajax({
url: URL '?folders=' filePath '&confirmOverwrite=' confirmOverwrite,
type: 'post',
data: formData,
// dataType: 'json',
contentType: false,
processData: false,
...
MVC 動作
[HttpPost]
public async Task<JsonResult> UploadFiles(IEnumerable<IFormFile> files, string folders, bool confirmOverwrite = false)
{
List<string> existingFiles = new();
var filesToBeSaved = new List<(IFormFile file, string filePath)>();
foreach (var file in files)
{
string trimmedFileName = file.FileName.Replace(" ", "");
var filePath = Path.Combine(folders, trimmedFileName);
if (System.IO.File.Exists(filePath) && !confirmOverwrite)
{
existingFiles.Add(file.FileName "(" trimmedFileName ")");
}
else
{
filesToBeSaved.Add((file, filePath));
}
}
...
我洗掉了很多代碼以保持相關性和簡單性。
為什么我提交表單時檔案引數顯示為空?
uj5u.com熱心網友回復:
模型系結按名稱系結引數。您的后端IEnumerable<IFormFile> files名稱是files.
所以你需要改變你的代碼,如下所示:
files.forEach(file => formData.append("files", file));
此外,我知道您可能想通過陣列索引發布它。僅對于復雜的串列模型型別,您可能需要像這樣的帖子:model[index].PropertyName. 參考這里。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444068.html
標籤:javascript jQuery 阿贾克斯 asp.net 核心 表单数据
上一篇:Jquery-無法點擊超鏈接
