Я использую jQuery-File-Upload и пытаюсь ограничить максимальное количество загружаемых изображений до 1 (загрузка одного изображения).
Я использую пример файла php из самой демо-версии, который находится в server/php/
как UploadHandler.php
На данный момент я заблокировал загрузку нескольких изображений при перетаскивании в JS, но, поскольку он находится только на стороне клиента и которому нельзя доверять в качестве решения с полным доказательством, я хочу знать, как я могу ограничить максимальное количество нет. загрузок на запрос
До сих пор я сделал:
<input class="photo file" id="fileupload" name="images" type="file">
И со стороны JS:
$('#fileupload').fileupload({
url: url,
dataType: 'json',
autoUpload: true,
dropZone: $('#fileupload'),
singleFileUploads: false,
}).on('fileuploadadd', function (e, data) {
//Hides error
$('.error').hide().children().text('');
var maxFileUploadAllowed = 1;
var fileCount = data.files.length;
if (fileCount > maxFileUploadAllowed) {
$('.error').fadeIn().children().text("You are allowed to upload only 1 file");
return false;
}
и это работает правильно, но также необходимо ограничить 1 файл на бэкэнде
При некотором копании я обнаружил, что в options
есть параметр как 'max_number_of_files' => null,
, я попытался изменить его на 1
, но затем при каждой загрузке файла, даже при загрузке одного файла, он начал выдавать ошибку как Maximum File limit exceeded
И после дальнейших раскопок я обнаружил, что проверки в этом утверждении if
каким-то образом верны и вызывают ошибку.
if (is_int($this->options['max_number_of_files']) &&
($this->count_file_objects() >= $this->options['max_number_of_files']) &&
// Ignore additional chunks of existing files:
!is_file($this->get_upload_path($file->name))) {
$file->error = $this->get_error_message('max_number_of_files');
return false;
}
Я сделал echo $this->count_file_objects()
и обнаружил, что на самом деле он возвращает максимальное количество файлов, разрешенных в каталоге загрузки.
Таким образом, в демонстрационном коде нет обработчика, который мог бы ограничить число. загрузок файлов на сервер.
Просто хотел узнать, есть ли способ ограничить нет. загрузок файлов в бэкэнд?
Будут проблемы, когда пользователь будет возиться со следующим:
- Массив имен
<input class="photo file" id="fileupload" name="images[]" type="file">
- "множественный" атрибут в
<input class="photo file" id="fileupload" name="images[]" type="file" multiple>
- Или возиться со следующим фрагментом
код ниже:
var maxFileUploadAllowed = 1;
var fileCount = data.files.length;
if (fileCount > maxFileUploadAllowed) {
$('.error').fadeIn().children().text("You are allowed to upload only 1 file");
return false;
}
Так как в бэкенде нет проверки.