Можно ли изменить имя файла, загружаемого через jquery blueimp?
JQuery BlueImp, как изменить имя файла перед загрузкой?
Ответы (5)
require('UploadHandler.php');
class CustomUploadHandler extends UploadHandler {
protected function trim_file_name($file_path, $name, $size, $type, $error, $index, $content_range) {
$name = 'First_' . microtime(true);
$name = str_replace('.', '', $name);
return $name;
}
}
$upload_handler = new CustomUploadHandler();
В вашем пользовательском файле index.php инициализируйте эту функцию UploadHandler.php
Этого можно добиться, только изменив функцию trim_file_name() на следующую в файле UploadHandler.php.
protected function trim_file_name(VARIABLES) {
$name = uniqid();
return $name;
}
и это все
Вот клиентское решение для BlueImp. Он использует обратный вызов "добавить" BlueImp. Мой пример удалит запятые из имени файла.
$('#fileupload').fileupload({
add: function (e, data) {
$.each(data.files, function (index, file) {
//set new name here
var newname = data.files[index].name.replace(",", "");
Object.defineProperty(data.files[index], 'name', {
value: newname
});
});
$.blueimp.fileupload.prototype.options.add.call(this, e, data);
}
})
.replace(/,/g, '')
или .split(',').join('')
- person bendytree; 18.01.2020
Свойство name объектов File доступно только для чтения, но в качестве свойства uploadName для каждого отдельного файла может быть указано альтернативное имя.
Можно использовать обратный вызов
$('#fileupload').fileupload
submit: (e, data) ->
data.files[0].uploadName = 'newname'
Если ваши data.files содержат все файлы за один раз, вы можете перебирать их.
Это решение было опубликовано пользователем lethal.industry здесь. Вы должны вставить этот код внутри класса UploadHandler в файле UploadHandler.php.
//custom function which generates a unique filename based on current time
protected function generate_unique_filename($filename = "")
{
$extension = "";
if ( $filename != "" )
{
$extension = pathinfo($filename , PATHINFO_EXTENSION);
if ( $extension != "" )
{
$extension = "." . $extension;
}
}
return md5(date('Y-m-d H:i:s:u')) . $extension;
}
Вы можете изменить имя файла по своему усмотрению, изменив последнюю строку «return...»
Затем вы ищете функцию «handle_file_upload» в UploadHandler.php и заменяете эту строку
$file->name = $this->get_file_name($uploaded_file, $name, $size, $type, $error, $index, $content_range);
для этой строки
$file->name = $this->generate_unique_filename($name);