qixiang0 2017-07-03
OSS Web直传方案通过将OSS和简单易用的前端上传组件Plupload结合,为前端上传文件场景提供了一个广泛支持的解决方案。
Plupload会自动侦测当前的环境,依次在html5、flash、silverlight、html4等方式中选择最合适的上传方式,这些种类基本可以满足PC和移动平台的各种主流浏览器版本使用。
由于各种平台的前端环境差异性,做到完美兼容还是非常困难的,然而一般兼容性问题查起来又非常蛋疼:按逻辑可以这么用,但就是在某个环境下不work,运气好的在揪掉几缕头发后会无意间找到解决方案,运气不好的……
这里跟大家分享一个我遇到的Plupload在iOS里的兼容性的小坑,希望能对遇到同样问题或即将遇到的这个问题的同学有所帮助:
问题描述:
Plupload中有个参数是multi_selection,这个参数作用是允许用户在选择上传文件的浏览框中可以进行多选的开关,默认值是true。当这个参数没有明确设定为false时,在iOS中除Safari外绝大部分的浏览器(Chrome、Firefox、UC、微信等)都无法上传视频!
问题现象:
目前发现的问题现象有两类,一类是会无法触发“FilesAdded”事件,另一类是可以触发“FilesAdded”事件,但是点击上传后上传进度卡在1%。
问题原因应该是之前plupload一直没有彻底解决的iOS环境下兼容性的问题:http://www.plupload.com/docs/Options#multi_selection
目前图片文件是可以正常上传,但是视频文件问题还是没有解决。
解决方案:
目前能找到的解决方案就是探测客户端环境做特殊处理,即如果检测到是iOS系统并且是非Safari浏览器,则将multi_selection设定为false(关闭多选功能),这样虽然损失了一些便利性,但确保了上传视频功能的正常使用。
如果大家有更好的方案,还请留言告知,分享你的知识来帮助大家~