【发布时间】:2014-12-30 23:49:08
【问题描述】:
通过 jquery blueimp 上传的文件可以更改文件名吗?
【问题讨论】:
标签: jquery file-upload blueimp
通过 jquery blueimp 上传的文件可以更改文件名吗?
【问题讨论】:
标签: jquery file-upload blueimp
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这个函数
【讨论】:
只需将 UploadHandler.php 文件中的 trim_file_name() 函数更改为以下内容即可实现。
protected function trim_file_name(VARIABLES) {
$name = uniqid();
return $name;
}
仅此而已
【讨论】:
这是特定于 BlueImp 的客户端解决方案。它使用BlueImp's "add" callback。我的示例将删除文件名中的逗号。
$('#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('')
File 对象的 name 属性是只读的,但可以为每个单独的文件提供一个替代名称作为 uploadName 属性。
可以使用回调
$('#fileupload').fileupload
submit: (e, data) ->
data.files[0].uploadName = 'newname'
如果您的 data.files 一次包含所有文件,您可以遍历它们。
【讨论】:
打开 UploadHandler.php
查找
protected function handle_file_upload();
编辑
$file->name = $this->get_file_name($uploaded_file, 'GiveYourNewName', $size, $type, $error, $index, $content_range);
【讨论】:
此解决方案由“lethal.industry”用户here 发布。 您必须将此代码粘贴到 UploadHandler.php 文件中的 UploadHandler 类中
//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 ...'
然后你在 UploadHandler.php 中搜索 'handle_file_upload' 函数并替换这一行
$file->name = $this->get_file_name($uploaded_file, $name, $size, $type, $error, $index, $content_range);
对于这一行
$file->name = $this->generate_unique_filename($name);
【讨论】: