Jquery BlueImp如何在上传之前更改文件名?

时间:2014-11-04 06:45:33

标签: jquery file-upload blueimp

是否可以通过jquery blueimp更改正在上传的文件的文件名?

5 个答案:

答案 0 :(得分:13)



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的这个函数

答案 1 :(得分:3)

只需将trim_file_name()函数更改为UploadHandler.php文件中的以下内容即可实现。

protected function trim_file_name(VARIABLES) {
    $name = uniqid();
    return $name;
}

这就是

答案 2 :(得分:0)

这是特定于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);
    }
})

答案 3 :(得分:0)

“文件”对象的name属性是只读的,但可以为每个文件提供一个替代名称作为uploadName属性。

可以使用回调

$('#fileupload').fileupload
  submit: (e, data) ->
    data.files[0].uploadName = 'newname'

如果data.files一次包含所有文件,则可以遍历它们。

答案 4 :(得分:-1)

此解决方案由' 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 ...'

然后你搜索' 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);