如何使用FormData向MVC Action提交文件

我正在創(chuàng)建一個(gè)ASP.NETCore 6文件上傳應(yīng)用程序。這是我的代碼:

FORM

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

我刪除了很多代碼,以保持相關(guān)和簡(jiǎn)單。

為什么提交表單時(shí)文件參數(shù)顯示為空??

? 最佳回答:

模型綁定按名稱綁定參數(shù)。您的后端IEnumerable<IFormFile> files名稱為files

因此,您需要更改代碼,如下所示:

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

此外,我知道你可能想通過數(shù)組索引發(fā)布它。僅對(duì)于復(fù)雜的列表模型類型,您可能需要如下帖子:model[index].PropertyName。參考這里。

主站蜘蛛池模板: 日韩人妻无码一区二区三区久久| 99精品国产一区二区三区| 在线精品一区二区三区电影| 国产成人精品视频一区二区不卡| 日韩美一区二区三区| 久久国产一区二区三区| 国产在线视频一区二区三区| 日韩一区二区久久久久久| 日韩aⅴ人妻无码一区二区| 无码人妻久久久一区二区三区| 福利片免费一区二区三区| 久热国产精品视频一区二区三区| 亚洲AV午夜福利精品一区二区| 国产精品 一区 在线| 中文字幕一区日韩在线视频 | 国产伦精品一区二区三区免费下载 | 亚洲AV成人一区二区三区观看| 国精品无码一区二区三区在线| 亚洲一区二区三区在线播放| 国产一区二区三区美女| 日韩免费一区二区三区| 激情无码亚洲一区二区三区| 亚洲日韩中文字幕一区| 亚洲AV成人精品一区二区三区| 中文字幕精品一区二区2021年| 精品亚洲A∨无码一区二区三区 | 在线精品亚洲一区二区| 亚洲va乱码一区二区三区| 麻豆AV一区二区三区| 中文无码一区二区不卡αv| 日本一区频道在线视频| 国产麻豆精品一区二区三区| 日韩成人无码一区二区三区| 麻豆国产在线不卡一区二区| 精品免费国产一区二区| 无码AⅤ精品一区二区三区| 在线精品亚洲一区二区小说| 国产一区二区三区91| 亚洲一区二区三区无码国产| 国产成人午夜精品一区二区三区| 国产一区二区三区电影|