常见问题
1. 点击设定的上传按钮无效
在配置七牛的函数中
browse_button: 'upload_file', // 上传选择的点选按钮,必需
container: 'upload_file', // 上传区域DOM ID,默认是browser_button的父元素
drop_element: 'upload_file', // 拖曳上传区域元素的ID,拖曳文件或文件夹后可触发上传
在这主要设置按钮区域的配置中...
如果browse_button
和container
设置成一样...则无法点击..
所以建议是container不像折腾的话就不写,默认指定到上一个父元素
2. 上传文件名为空
一开始传一张照片上去
七牛云内容管理里查看该上传的图片没有名字
然后再上传一张,就提示614错误 该文件已经存在了
后面是发现配置对象中的save_key为false,所以导致我上传时候附带的key为空,如果更改为true,就自动获取文件名称.
当save_key为true,则命名为随机的hash,永不会重复
看看save_key的说明
save_key: true, // 默认false。若在服务端生成uptoken的上传策略中指定了sava_key,则开启,SDK在前端将不对key进行任何处理
3. 设置uptoken_url时,请求错误
显示的错误是
XMLHttpRequest cannot load 指定的url. Request header field If-Modified-Since is not allowed by Access-Control-Allow-Headers in preflight response.
看看看qiniu.js的源码,有一段
var getUpToken = function() {
if (!op.uptoken) {
// TODO: use mOxie
var ajax = that.createAjax();
ajax.open('GET', that.uptoken_url, true);
ajax.setRequestHeader("If-Modified-Since", "0"); //注意这里
ajax.onreadystatechange = function() {
if (ajax.readyState === 4 && ajax.status === 200) {
var res = that.parseJSON(ajax.responseText);
that.token = res.uptoken;
}
};
ajax.send();
} else {
that.token = op.uptoken;
}
};
所以我在apache中设置
<Directory />
...
Header set Access-Control-Allow-Headers If-Modified-Since
...
</Directory>
这里如果设置 Header set Access-Control-Allow-Headers *
不行 ...不知道为啥..
4. 设置uptoken_url,返回的数据格式
这种在七牛配置对象中设置了uptoken_url请求token的话
默认是有格式限定的,看源代码
ajax.onreadystatechange = function() {
if (ajax.readyState === 4 && ajax.status === 200) {
var res = that.parseJSON(ajax.responseText);
that.token = res.uptoken;
}
};
返回的token需要时JSON格式的: {"uptoken": 具体的token}
但是文档并没有说