gpt4 book ai didi

javascript - 如何使用 FormData 将文件提交到 MVC Action

转载 作者:行者123 更新时间:2023-12-05 05:45:02 25 4
gpt4 key购买 nike

我正在创建一个 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 Action

       [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));
}
}
...

我删除了很多代码以保持相关性和简单性。

为什么当我提交表单时文件参数显示为空??

最佳答案

模型绑定(bind)通过名称绑定(bind)参数。您的后端在这里 IEnumerable<IFormFile> files名字是files .

因此您需要像下面这样更改您的代码:

files.forEach(file => formData.append("files", file)); 

此外,我知道您可能想按数组索引发布它。仅对于复杂列表模型类型,您可能需要像这样的帖子:model[index].PropertyName .引用here .

关于javascript - 如何使用 FormData 将文件提交到 MVC Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71476893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com