Как отправить массив с файлом и именем из представления на контроллер с помощью запроса AJAX? - PullRequest
0 голосов
/ 26 декабря 2018

enter image description here

JSON.stringify (getAllPortfolioTableData ()));т.е. JSON.stringify удаляет файл при входе в контроллер с помощью formcollection

 var formData = new FormData();  
    formData.append("Title", txtTitle);
    formData.append("PorfolioKeywords", txtKeywords);
    formData.append("PortfolioDescription", txtDescription);
    formData.append("PortfolioTableData", JSON.stringify(getAllPortfolioTableData()));
    formData.append("UrlTableData", JSON.stringify(getAllUrlTableData()));  

  $.ajax({
        type: "POST",
        url: url,
        data: formData,
        dataType: 'json',
        contentType: false,
        processData: false, 

1 Ответ

0 голосов
/ 26 декабря 2018

Допустим, у вас есть представление как:

<form id="upload-files"> <input class="file-input" type="file" id="fileInput1" /> <input class="file-input" type="file" id="fileInput2" /> <input type="button" id="fileButton" value="Upload Files" /><br /> </form>

и сообщение ajax вроде:

$("#fileButton").click(function () {

        var fileData = new FormData();
        var files = $(".file-input");
        for (var i = 0; i < files.length; i++) {
            fileData.append("fileInput", files[i].files[0]);
        }

        $.ajax({
            type: "POST",
            url: url,
            dataType: "json",
            contentType: false, 
            processData: false, 
            data: fileData,
            success: function (result, status, xhr) {
                alert(result);
            },
            error: function (xhr, status, error) {
                alert(status);
            }
        });
    });

и в контроллере:

[HttpPost]
    public ActionResult UploadFiles()
    {
        HttpFileCollectionBase files1 = Request.Files;
        for (int i = 0; i < files1.Count; i++)
        {
            HttpPostedFileBase file = files1[i];
        }
        return Json(files1.Count + " Files Uploaded!");
    }

так же, как вы можете добавлять и другие входные данные.

надеюсь, это поможет

...