Удалите выбранный файл (ы), щелкнув ссылку удаления из входного файла, и отправьте в параметр контроллера

Как отправить файл (ы) в параметр в моем контроллере? У меня есть точка останова для моего действия в моем контроллере, и я хочу посмотреть, могут ли файлы (после удаления некоторых ненужных файлов) быть отправлены через мой контроллер.

Прямо сейчас, даже если я нажму кнопку загрузки, точка останова выдаст мне нулевое значение вместо имени файлов.

После нажатия кнопки отправки файлы, отображаемые в консоли (F12), в порядке, но для точки останова в моем контроллере отображается значение null.

Что мне делать, чтобы отправить файлы своему контроллеру?

Да, добавил я.

Matt 28.12.2018 05:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Ваш код ajax отправляет файлы с именем fileList[], но ваш сервер ожидает параметр с именем parameterIsHere, а Тип должен быть UploadFiles.
  2. Похоже, вы не отправляете токен CSRF

Как исправить :

Подход А:

  1. На стороне сервера: измените метод действия, как показано ниже (обратите внимание на тип и имя):

    [HttpPost]
    public IActionResult UploadAction(List<IFormFile> fileList)
    {
         // ...
    }
    
  2. На стороне клиента: добавьте токен CSRF и измените имя полей на fileList:

    function sendModifiesList(e) {
        e.preventDefault();
        fileList.forEach(function(file,idx) {
            formData.append(`fileList`, file);      //// name should be `fileList` 
        });
        formData.append("__RequestVerificationToken",$("form input[name='__RequestVerificationToken']").val());
        console.info("These files will be posted: ", formData.getAll("fileList"));
        /*************** EDIT *************************/
        // Get the url from the form's action attribute
        let url = document.forms[0].action;
        let request = new XMLHttpRequest();
        // Create a POST request
        request.open("POST", url);
        // Set up an onload handler to report status
        request.onload = function() {
            if (request.status == 200) {
                console.info("Uploaded!");
            } else {
                console.info("Error " + request.status + " occurred when trying to upload your file.");
            }
        };
        // Send the form to the server 
        request.send(formData);
        /************ END EDIT ***********************/
    };
    

Подход B:

если вас не волнует имя, вы можете просто использовать HttpContext.Request.Form.Files для получения файлов:

    [HttpPost]
    public IActionResult UploadAction()
    {
         var files= HttpContext.Request.Form.Files;
         // ... 
    }

Другие вопросы по теме