已经考虑到上传视频文件,文件较大(100M左右),所以采用七牛的分片上传,以及断点续传。
在官网中的看到的有关“七牛大文件上传示例”,发现在火狐以及谷歌中可以运行(还是有些问题,下面再说),但是在IE10中,报错了:【SCRIPT438: 对象不支持“readAsBinaryString”属性或方法 】,因为该demo并没有详细的文档说明,所以问一下官方: 是否支持HTML5的浏览器,即可运行该demo,出现了这个问题,“qiniu.uploader.js” 该文件是否还需要改善? 希望给出点建议,谢谢。
[图1]该示例是在 http://7niu.sinaapp.com/下载的
[图2]IE10 报错截图
补充说明上面说到的,在谷歌和火狐浏览器中存在的一些问题:
因为该demo,在每次点击上传文件时,都会先ajax请求获取一个uptoken,即请求index.php。
并且每次请求都会POST一些数据:index.php 来接受数据,打印出来的结果是:
Array( [putExtra] => {\"key\":\"bbbb.jpg\"})
该demo中的index.php 是这样处理的:$extra = json_decode($_POST["putExtra"]);
结果是报错的,当然有可能官方使用的php版本较低,我用的php5.3,结果就是报错,因为该字符串并非json_decode可反序列化的字符串,而是添加了反斜杠,所以报错。
最后自己的解决方法是:
$_POST["putExtra"] = stripslashes($_POST["putExtra"]); //先把反斜杠给去掉
$extra = json_decode($_POST["putExtra"]);
不知道官方放出的demo,会没有说明的,就一个demo放在哪里,最起码有一个文档说明吧,所以对于我们开发人员来讲,是非常不淡定的一件事,希望以后,只要是官方给出的东西,都必须有详细的文档说明才好。
这个示例有点旧了,一些bug没有修复,使用的php-sdk也不是最新的,js分片上传接口的实现可以参考https://github.com/qiniupd/qiniu-js-sdk/blob/master/src/qiniu.js ,当中的
this.uploader
函数中有分片上传的实现;另外你可以自己把php-sdk替换成https://github.com/qiniu/php-sdk。