Событие Dropzone ProcessQueue не попадает на сервер после первой загрузки - PullRequest
1 голос
/ 17 февраля 2020

У меня есть загрузка в Dropzone на моем сайте, которая обрабатывает загрузку файлов. Он отлично работает при первой загрузке. Однако, при попытке загрузить файл (или тот же файл) во второй раз, снова нажав кнопку «btn_Upload», ничего не происходит. Я полагаю, что проблема заключается в функции processQueue (), когда код достигает этой точки, но серверная точка останова никогда не попадает во второй раз.

События успеха, ошибок и завершения также никогда не достигаются снова после первоначальная загрузка.

Если кто-то, кто более осведомлен о Dropzone, может подсказать мне, где я могу найти решение этой проблемы, или если кто-то сталкивался с подобной проблемой ранее, я был бы признателен за некоторые рекомендации.

$(document).ready(function () {
    $("#ContentPlaceHolder1_dZUpload").dropzone({
        url: "handlers/Upload.ashx",
        dictDefaultMessage: "Click or Drag and Drop to Upload a File",
        previewTemplate: document.getElementById("dropzoneTemplate").innerHTML,
        timeout: 10000,
        autoProcessQueue: false,
        init: function () {
            let upload = this;

            // Restrict to 1 file uploaded
            upload.on("addedfile", function () {
                if (upload.files[1] != null) {
                    upload.removeFile(upload.files[0]);
                }
            });
            // If validation passes, process queue and add insurance
            $("#btn_Upload").on("click", function (e) {
                e.preventDefault();
                upload.processQueue();
            });
        },
        success: function (file, response) {
            console.log("Upload Attempt Success - Insurance added");
        },
        error: function (file, xhr, formData) {
            console.log("Upload Attempt Error - " + formData.status + " " + formData.statusText);
        },
        complete: function (file, response) {
            console.log("Upload Attempt Finished");
        }
    });
});

1 Ответ

1 голос
/ 17 февраля 2020

Теперь я чувствую себя идиотом. Я буквально нашел решение через несколько минут.

complete: function (file, response) {
   file.status = "queued";
   console.log("Insurance Upload Attempt Finished");
}

Оказывается, что dropzone помечает файлы, когда они обрабатываются, чтобы избежать их двойной обработки. Поэтому я просто изменяю статус обратно на «в очереди», и это гарантирует, что dropzone будет загружать их при повторном нажатии кнопки.

Решение найдено здесь: Использование Dropzone для двойной загрузки с asp. net

...