您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
魅族手机webview文件(尤指视频等大文件)上传解决方案
发布时间:2017-03-26 17:21:43编辑:雪饮阅读()
项目需要在微信公众平台内嵌的微信浏览器中实现发布视频的功能,这个自是不难,可选的方法很多,如:
传统的直接提交表单,ajax结合html5的formdata等
当我自认为已经做好之后,客户反映无法发布视频,但经我们技术部的测试是ok的啊.后来一问客户手机型号发现是魅族,正好销售部有一魅族遂借来测试.
最终发现魅族存在以下问题:
1、input type='file'时若指定accept限制则就会导致视频无法选取,虽然accept限制的类型的确是视频类型
2、选取的文件稍微有一丁点大都无法上传。
对于问题一很好解决,关于问题二我研究发现发送文件请求中有“provisional headers are shown”信息,尝试各种百度的各种方法均无解。
最后无奈想到 一个比较下策的方法。
把视频用js转换成base64的字符串,并且将该字符串分割成n个元素的数组,这样以来增加了请求数但每个请求都发送一个不算大的字符串。这样的确解决了问题。
不过有一个无伤大雅的技术细节有被我发现了:
当我for循环这个字符串数组并ajax请求时,发现每个ajax请求都没有返回值,但每个请求所执行的业务逻辑的确有执行。即便我把每个ajax请求都改为同步也没有发现问题得解。不过无所谓了,反正目前还不影响什么。
关键字词:魅族,webview,input,file