Файловый объект всегда возвращает ноль в контроллере - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь загрузить два файла, используя ajax, но в контроллере mvc5 всегда возвращается ноль. ниже я предоставил код, который я написал. пожалуйста, проверьте и скажите мне, что я делаю здесь неправильно. Имя класса двух файлов: Banner, а другое - Thumbnail. Я только добавил код для миниатюры, чтобы сделать пример меньше.

Контроллер mvc5:

[HttpPost]
        public JsonResult Add(Add data)
        {

}

модель:

public class Add
    {
        [AllowHtml]
        public string Name { get; set; }
        public string Description { get; set; }
        public HttpPostedFileBase Thumbnail { get; set; }

        public HttpPostedFileBase Banner { get; set; }
    }

ajax:

var form_data = new FormData();
    form_data.append("Thumbnail", $('#Thumbnail')[0].files[0]);//check this line carefully. i think something wrong here

     $("#add").on("click", function () {
            $.ajax({
                url: '/MyCon/Add',
                dataType: 'text',
                cache: false,
                contentType: false,
                processData: false,
                data: form_data,
                type: 'post',
                success: function (data) {
                    //console.log(data);
                    swal({
                        title: "Successful!",
                        text: "New product has been created.",
                        icon: "success",
                        button: "Ok",
                    });
                    setTimeout(
                        function () {
                            location.reload();
                        }, 3000);
                },
                error: function (error) {
                    //console.log(error);
                    swal({
                        title: "Error!",
                        text: "Failed! Something wrong..",
                        icon: "error",
                        button: "Ok",
                    });
                }
            });
        });

html:

<div class="form-group">
                <label for="Thumbnail">Thumnail:</label>
                <input type="file" class="form-control-file" id="Thumbnail">
            </div>

1 Ответ

0 голосов
/ 04 мая 2020

Вы уверены, что загруженный вами файл добавлен к вашим form_data?

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

Возможно, вам следует переместить form_data.append("Thumbnail", $('#Thumbnail')[0].files[0]); этот скрипт сюда, в файл ввода onChange EventListener или в кнопку добавления onClick EventListener

например:

$('#Thumbnail').on('change', function() {
    form_data.append("Thumbnail", $('#Thumbnail')[0].files[0]);
});

или

$("#add").on("click", function () {
    form_data.append("Thumbnail", $('#Thumbnail')[0].files[0]);
    $.ajax({
        ......//normal ajax
    });
});

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...