使用qiniu-js前端通过token的形式上传图片时,接口报错:error: "file exists"
上传域名:https://upload.qiniup.com/
方法:Qiniu.upload(file, key, token, putExtra, config);
问题就出在这个key这里,如下例子,把key设置为文件名字,很容易有重复的问题。但有疑惑的是并不是同名就一定会出现file exists问题,我上传同样一个png文件,多次上传都可以成功,可能是本身7牛自己会重新计算得出一个新hash值。
const token = data.data.token;
const key = file.name || null; // 上传后文件资源名以设置的 key 为主,如果 key 为 null 或者 undefined,则文件资源名会以 hash 值作为资源名。
const config = {};
const putExtra = {
fname: '', //文件原文件名
params: {}, //用来放置自定义变量
mimeType: null, //用来限制上传文件类型,为 null 时表示不对文件类型限制;限制类型放到数组里: ["image/png", "image/jpeg", "image/gif"]
};
const observable = Qiniu.upload(file, key, token, putExtra, config);
observable.subscribe({...})
解决方法:把key设置为null就ok了
key = null // 上传后文件资源名以设置的 key 为主,如果 key 为 null 或者 undefined,则文件资源名会以 hash 值作为资源名。
参考:
如何避免用户上传同名文件 https://developer.qiniu.com/kodo/kb/1365/how-to-avoid-the-users-to-upload-files-with-the-same-key