Dropzone на бритве Страница возвращает 400 кодов состояния - PullRequest
0 голосов
/ 01 мая 2018

Я использую DropZone на странице RAZOR в ASP.NET core 2.0 с другими формами ввода, как это -

Страница DzDemo.cshtml -

<form method="post" enctype="multipart/form-data">
    <input type="text" id="Username" name="Username" />
    <div class="dropzone" id="my-dropzone" name="mainFileUploader">
        <div class="fallback">
            <input name="file" type="file" multiple />
        </div>
    </div>
</form>
<div>
    <button type="submit" id="submit-all"> upload </button>
</div>

JS: -

Dropzone.options.myDropzone = {
            url: "/DzDemo?handler=Upload",
            autoProcessQueue: false,
            uploadMultiple: true,
            parallelUploads: 100,
            maxFiles: 100,
            acceptedFiles: "image/*",
           // paramName: myParamName,
            init: function () {

                var submitButton = document.querySelector("#submit-all");
                var wrapperThis = this;

                submitButton.addEventListener("click", function () {
                    wrapperThis.processQueue();
                });

                this.on('sendingmultiple', function (data, xhr, formData) {
                    formData.append("UserName", $("#Username").val());
                });
                this.on('error',
                    function (file, response) {
                        console.log(response);
                        alert(response);
                    });
            }
        };

DzDemo.cshtml.cs Страница: -

[HttpPost]
        public IActionResult OnPostUpload()
        {
            var data = Request.Form; //This is 
            return Page();
        }

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

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Добавьте эту строку в посылку несколько, это разрешит ваш pb:

this.on('sendingmultiple', function (data, xhr, formData) {
    xhr.setRequestHeader("XSRF-TOKEN",
                     $('input:hidden[name="__RequestVerificationToken"]').val());
});
0 голосов
/ 16 декабря 2018

Одна вещь, которая приведет к 400 с использованием dropzone.js вместе с Razor Pages, - это отсутствие AntiforgeryToken в форме.

Обычно это вводится автоматически, но удаление _viewimports или его taghelpers предотвратит это.

Чтобы проверить, просто добавьте эту строку внутри элемента <form/> или посмотрите на консоли отладки сообщения об ошибках.

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