Я думаю, что в DropZone есть ошибка или, по крайней мере, странное поведение. Я установил стандартный DZ следующим образом:
Dropzone.options.imgUploadForm = {
autoProcessQueue: false,
autoDiscover: false,
init: function() {
myDropzone = this; // closure
var fileCount = 0;
var minImgSize = 2048;
var fileRes = [];
this.on("maxfilesexceeded", function(file) { alert("Too many files to upload: "+file); });
this.on("success", function(file, responseText) {
fileCount++;
fileRes.push(responseText);
});
this.on("error", function(file, message) {
console.log(message);
alert(file.name+"\n-------------\n"+message);
// this.removeFile(file);
});
this.on("complete", function(file) {
myDropzone.removeFile(file);
});
this.on("thumbnail", function(file) {
var fileName = file.name;
var stat = file.status;
var ext = fileName.substr(fileName.lastIndexOf('.')+1);
if (ext == 'jpg') {
if (file.width < minImgSize || file.height < minImgSize) // Do the dimension checks you want to do
file.rejectDimensions();
else
file.acceptDimensions();
}
});
},
accept: function(file, done) {
var fileName = file.name;
var ext = fileName.substr(fileName.lastIndexOf('.')+1);
file.acceptDimensions = done;
file.rejectDimensions = function () { done("Invalid dimensions (minimum size be must be: "+minImgSize+" px"); };
},
maxFiles: 200,
parallelUploads: 20,
maxFilesize: 2000, /* MB */
timeout: 300000,
/*acceptedFiles: "application/*",*/
addRemoveLinks: true,
dictRemoveFile: "Remove",
dictFileTooBig: "Image is too heavy @{{filesize}} MB!\n\Max @{{maxFilesize}} MB allowed.",
dictDefaultMessage: "<b>Drop images here</b>",
};
Это работает правильно при загрузке изображений, но другие типы файлов не загружаются. Попробовав все возможные решения, я придумал следующий код в функции ' accept ', который, хотя и очень странно, работает:
file.acceptDimensions = ext == 'jpg' ? done : done();
Вместо того, чтобы просто устанавливать ' acceptDimensions '= done Я установил done () для «других» типов файлов. Конечно, это больше похоже на патч, чем на решение, но оно работает, мне просто было бы любопытно понять, почему. Спасибо всем, у кого есть терпение и навыки, чтобы придумать объяснение и, возможно, исправление.