Dropzonejs вызывает ошибку и отменяет загрузку

1

Я использую Dropzonejs, и то, что я хотел бы сделать, по существу просто. Но я не могу найти статей об этом.

Поэтому при отправке файла мы вызываем ошибку при неприятных файлах.exe и.php. Интерфейс dropzonejs показывает сообщение X и и об ошибке. Так что правильно. Проблема в том, что он по-прежнему попадает в событие успеха и загружается.

uploader.on("sending", function (file, xhr, data) {

    var aDeny = [ // deny file some extensions by default
        'application/x-msdownload',
        'text/php'
    ];

    if($.inArray(file.type, aDeny) !== -1) {
        this.defaultOptions.error(file, 'File not allowed: ' + file.name);
        return false;
    }
});

Evil.exe по-прежнему появляется в этом событии успеха и загружается. В ответе есть только строка пути к файлу и file.status.

uploader.on('success', function (file, response) {

    getData({'dostuff'});

    return file.previewElement.classList.add("dz-success");
});

Итак, в моем "отправке" события, как я могу предотвратить появление файла в событии успеха?

ОБНОВИТЬ:

Спасибо! Это то, что мне было нужно в конце:

var aDeny = [ // deny file some extensions by default
    'application/x-msdownload',
    'text/php'
];

Dropzone.options.uploadWidget = {
    // more config...
    accept: function (file, done) {
        if ($.inArray(file.type, aDeny) !== -1) {
            done("This file is not accepted!");
        }
        else {
            done();
        }
    }
}
Теги:
dropzone.js

1 ответ

2
Лучший ответ

В первую очередь я бы всегда проверял тип файла на стороне сервера, чтобы предотвратить возникновение каких-либо проблем.

Затем, чтобы фильтровать типы файлов с помощью Dropzone, вы можете использовать:

Реализация accept по умолчанию проверяет тип или расширение файла mime на этот список. Это список разделенных запятыми типов mime или расширений файлов.

Например: image/*, application/pdf,.psd

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

Образец:

var myDropzone = new Dropzone("div#myId", { 
    url: "/file/post",
    acceptedFiles: 'application/x-msdownload,text/php'
});

Функция, которая получает файл и выполняемую функцию как параметры.

Если выполняемая функция вызывается без аргументов, файл будет "принят" и будет обработан. Если вы передадите сообщение об ошибке, файл будет отклонен, и появится сообщение об ошибке. Эта функция не будет вызываться, если файл слишком большой или не соответствует типу mime.

Образец:

Dropzone.options.myAwesomeDropzone = {
  paramName: "file", // The name that will be used to transfer the file
  maxFilesize: 2, // MB
  accept: function(file, done) {
    if (file.name == "justinbieber.jpg") {
      done("This file is not accepted!");
    }
    else { done(); }
  }
};
  • 0
    Итак, вы нашли правильное решение :)
  • 0
    Я думаю, обнаружение Джастина Бибера должно быть более надежным :))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню