Home  >  Q&A  >  body text

七牛云存储 - 七牛使用JavaScript上传文件,没有设置Key,为什么没有重命名为hash?

我注意到API文档里面有这么一句

资源的最终名称,位于key消息中。如不指定则使用上传策略saveKey字段所指定模板生成Key,如无模板则使用Hash值作为Key。

我在服务端设置的上传策略没有设置key

private String getUpToken0(){
    return auth.uploadToken("bucket");
}

在js代码中也没有设置key

Qiniu.uploader({
    runtimes: 'html5,flash,html4',    //上传模式,依次退化
    browse_button: btn_id,       //上传选择的点选按钮,**必需**
    uptoken : data.token,
    domain: data.domain,        //bucket 域名,下载资源时用到,**必需**
    flash_swf_url: '../plugins/plupload/Moxie.swf',  //引入flash,相对路径
    max_retries: 3,                   //上传失败最大重试次数
    dragdrop: false,                   //开启可拖曳上传
    chunk_size: '200kb',                //分块上传时,每片的体积
    auto_start: true,
    multi_selection:false,
    filters : {
        max_file_size : '200kb',
        mime_types: [
            {title : "Image files", extensions : "jpg,png"}
        ]
    },
    init: {
        'FilesAdded': function(up, file) {
            // 每个文件上传前,处理相关的事情
            if(size>1){
                if($(".img-area").length == size){
                    $.each(up.files, function (i, file) {
                        up.removeFile(file);
                    });
                    layer.alert('最多只允许上传'+size+'张图片!', {
                        closeBtn: false
                    });
                }
            }
        },
        'FileUploaded': function(up, file, info) {
            $.each(up.files, function (i, file) {
                up.removeFile(file);
            });
        },
        'Error': function(up, err, errTip) {
        }
    }
});

现在奇怪的是,上传之后,并没有将文件重命名为hash,还是使用的原文件名。这样会导致我无法上传同名的不同文件。
但是我发现在init里面新增'Key': function(up, file) {}就能重名了。请问,为什么会这样?

伊谢尔伦伊谢尔伦2723 days ago609

reply all(2)I'll reply

  • PHP中文网

    PHP中文网2017-04-10 15:24:05

    资源的最终名称,位于key消息中。如不指定则使用上传策略saveKey字段所指定模板生成Key,如无模板则使用Hash值作为Key。

    这句话的意思其实是,上传策略不指定key的同时,上传函数函数也不指定key,才会用文件的hash进行命名,在js-sdk中,https://github.com/qiniu/js-sdk/blob/master/src/qiniu.js#L295 会生成上传文件的key,如果初始化的uploader的时候,将'key'的自定义内容返回出来,那么就可以自定义上传文件的文件名了。

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-10 15:24:05

    遇到同样的问题。。感谢lz和楼上的

    reply
    0
  • Cancelreply