Моя реализация dropzone имеет следующие характеристики:
- позволяет 3 файла максимум
- имеет ограничение по размерам ширины и высоты
- имеет ограничение на размер файла
- проверяет MIME на сервере и, если это не изображение, я запускаю removeFile (файл);
Чтобы проверить это, я переименовал файл .pdf в .jpeg и использовал его для тестирования.
Файл успешно удален и все остальное работает за исключением того, что я получаю эти два сообщения console.log всякий раз, когда загружаю файл, который не проходит проверку MIME на сервере.
Почему генерируются эти ошибки console.log и что я должен изменить, чтобы их предотвратить?
GET http://localhost/dropzone_devel/[object%20Event] 404 (Not Found) [object%20Event]:1
POST http://localhost/dropzone_devel/upload.php 500 (Internal Server Error) dropzone.min.js:2
снимок экрана ошибок console.log при загрузке неверного файла MIME
Я использую новейшую версию dropzone.js и прочитал все посты в этой библиотеке вики и форумах без удачи.
Ниже приведены соответствующие примеры используемого кода:
○ При INIT делает миниатюры для файлов на сервере:
$.ajax({
type: 'POST',
url: 'upload.php',
data: {action: 2},
dataType: 'json',
success: function (response) {
$.each(response, function (key, val) {
var mockFile = {name: val.name, size: val.size, accepted: true};
myDropzone.emit("addedfile", mockFile);
myDropzone.emit("thumbnail", mockFile, val.path);
myDropzone.emit("complete", mockFile);
myDropzone.files.push(mockFile);
});
}
});
○ Проверяются максимально допустимые размеры по ширине и высоте:
this.on("thumbnail", function (file) {
if (file.rejectDimensions !== undefined || file.acceptDimensions !== undefined) {
if (file.width > maxImageWidth || file.height > maxImageHeight) {
file.rejectDimensions()
//this.removeFile(file);
} else {
file.acceptDimensions();
}
}
});
○ Другие опции:
addRemoveLinks: true,
uploadMultiple: false,
maxFiles: 3,
maxFilesize: 2,
acceptedFiles: 'image/*'
○ upload.php возвращает json или ошибку, если не изображение jpeg или png:
if (in_array($mime, ["image/jpeg", "image/png"], true)) {
move_uploaded_file($_FILES["file"]["tmp_name"], $target_dir . $_FILES['file']['name']);
$upload_response = array('filename' => $_FILES['file']['name'], 'mime' => $mime);
echo json_encode($upload_response);
exit;
} else {
header('HTTP/1.1 500 Internal Server Error');
header('Content-type: text/plain');
$msg = "File type '$mime' is not allowed.";
exit($msg);
}
○ При возникновении ошибки файл удаляется:
this.on("error", function (file, message, xhr) {
this.removeFile(file);
});
Ожидаемый результат: ошибки console.log отсутствуют.