七牛Javascript SDK无法上传aiv、mp4、mp3
开发&测试环境
- 操作系统:Window 7 专业版 32位 SP1。
- 浏览器:Google Chrome 版本 42.0.2311.90 m。
使用工具及版本:
1. 七牛JS-SDK v1.0.4-beta
下载地址:
https://github.com/qiniu/js-sdk/archive/v1.0.4-beta.zip
。
2. Plupload插件 plupload-2.1.2
下载地址:
https://github.com/moxiecode/plupload/archive/v2.1.2.zip
测试过能上传成功的文件:
- 图片(png/jpg/bmp):测试文件大小范围在 几百KB 至 8MB左右,直传/分块 均上传成功。
- rar压缩包,测试文件大小范围在 10几MB 至 300百兆左右,分块 均上传成功。
测试上传失败的文件:
- 视频(avi/mp4):测试文件大小范围在 16MB 至 90MB左右,均上传失败。
- 音频(mp3):测试文件大小范围在 4MB左右,均上传失败。
**注意:**只要将上传失败的视频文件扩展名更名为 “.flv” 就能成功上传。
错误截图
七牛官方示例错误截图:
我自己的错误截图:
我的HTML代码
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>七牛图片上传 Demo </title>
</head>
<body>
<div id="container">
<input type="file" id="fileToUpload">
</div>
<div id="msg"></div>
<script type="text/jscript" src="/scripts/jquery-latest.min.js"></script>
<script type="text/jscript" src="./src/qiniu.js"></script>
<script type="text/jscript" src="./plupload-2.1.2/js/moxie.js"></script>
<script type="text/jscript" src="./plupload-2.1.2/js/plupload.dev.js"></script>
<script type="text/javascript">
//具体Javascript脚本代码见下面“我的Javascript代码”。
</script>
</body>
</html>
我的Javascript代码
<script type="text/javascript">
var inputFile = $('#fileToUpload');
var msg = $('#msg');
var uploader = Qiniu.uploader({
runtimes: 'html5,flash,html4', //上传模式,依次退化
browse_button: 'fileToUpload', //上传选择的点选按钮,**必需**
//若未指定uptoken_url,则必须指定 uptoken ,uptoken由其他程序生成
uptoken : '此处省略。。。。。',
save_key: true, // 默认 false。若在服务端生成uptoken的上传策略中指定了 `sava_key`,则开启,SDK在前端将不对key进行任何处理
domain: 'http://xxxxxxxx.com1.z0.glb.clouddn.com/',
container: 'container',//上传区域DOM ID,默认是browser_button的父元素,
max_file_size: '1000mb', //最大文件体积限制
flash_swf_url: './plupload-2.1.2/js/Moxie.swf', //引入flash,相对路径
max_retries: 0, //上传失败最大重试次数
dragdrop: true, //开启可拖曳上传
drop_element: 'container', //拖曳上传区域元素的ID,拖曳文件或文件夹后可触发上传
chunk_size: '4mb', //分块上传时,每片的体积
auto_start: true, //选择文件后自动上传,若关闭需要自己绑定事件触发上传
init: {
'FilesAdded': function(up, files) {
plupload.each(files, function(file) {
// 文件添加进队列后,处理相关的事情
msg.append(' FilesAdded 事件(文件添加进队列后,处理相关的事情)<br />');
});
},
'BeforeUpload': function(up, file) {
// 每个文件上传前,处理相关的事情
msg.append(' BeforeUpload 事件(每个文件上传前,处理相关的事情)<br />');
},
'UploadProgress': function(up, file) {
// 每个文件上传时,处理相关的事情
var percent = Math.round(file.loaded / file.size * 100);
msg.append(' UploadProgress 事件(每个文件上传时,处理相关的事情),已上传:' + percent + '%<br />');
},
'FileUploaded': function(up, file, info) {
// 每个文件上传成功后,处理相关的事情
// 其中 info 是文件上传成功后,服务端返回的json,形式如
// {
// "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
// "key": "gogopher.jpg"
// }
// 参考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.html
// var domain = up.getOption('domain');
// var res = parseJSON(info);
// var sourceLink = domain + res.key; 获取上传成功后的文件的Url
msg.append(' FileUploaded 事件(每个文件上传成功后,处理相关的事)' + JSON.stringify(info) + '<br />');
},
'Error': function(up, err, errTip) {
//上传出错时,处理相关的事情<br>
msg.append(' Error 事件(上传出错时,处理相关的事情)<br />');
},
'UploadComplete': function() {
//队列文件处理完毕后,处理相关的事情
msg.append(' UploadComplete 事件(队列文件处理完毕后,处理相关的事情)<br />');
},
'Key': function(up, file) {
// 若想在前端对每个文件的key进行个性化处理,可以配置该函数
// 该配置必须要在 unique_names: false , save_key: false 时才生效
var key = "";
// do something with key here
return key
}
}
});
</script>
火星丿小朋友
10 years, 5 months ago