关于WEBVIEW⽹页⽆法上传⽂件的问题,即是
INPUTFILE不⽀持的问题
绝⼤部分⼈都遇到了内置浏览器中input file元素点击没反应的情况,这其实并不是的错,没有做任何事情来限制你。
这个问题只存在于Android4.4或以上版本的系统,4.4以下是没问题的,IOS当然也是没有任何问题。所以这是google的错。从Android4.4以后的Webview中移除input file元素的⽀持,是出于系统安全问题的考虑。
代码转换那webview⽹页要上传⽂件怎么办呢?
如果是你⾃⼰⾃⾏开发的APP,那么简单,你可以在APP层⾯上对Webview组件进⾏扩展,使其⽀持input file。⽅法请⾕歌或百度,现成代码⼤把,⽽且不难。
如果APP并不能由你来控制,⽐如你的⽹页想在安卓版内置浏览器中上传⽂件,那么就不能想着让腾讯去改代码让他⽀持input file 了,他们不会理你的,就算是理你,那也不能马上解决问题,让⼏亿⽤户更新到最新版本,不是那么容易的事情。
但是,难不到我,好在留下了⼀条活路给你⾛,实在不⾏,引导⽤户跳出,让他们点击右上⾓菜单“在浏览器中打开”,哈哈。⽤户体验差了点,但是起码能实现上传啊。
此外,还有两点要提⼀下:
⼀,不同的浏览器,对input file的实现是不⼀样的,安卓下的浏览器,⼤多不⽀持多选,⼀个input file只能选⼀个⽂件。
⼆,的JSSDK有照⽚选择、上传、下载功能,使你能调⽤本⾝实现的功能,但是⾮常,⽆法⽤来解决input file不⽀持的问题。
选择照⽚功能,得到localID,是⼀段协议的url,类似“weixin://3456345345/345hg345g34”。此url可以放进img.src中显⽰图⽚,但是⽆法获取它的数据来保存到⾃⼰的服务器,当你试图⽤canvas来转化获取img的base64格式数据时,会引发“SECURITY_ERR:DOM Exception 18”异常,这是⼀个跨域安全限制,对于“weixin://”协议,根本⽆法通过服务端把它的域转换过来。
上传功能,使⽤localID,把图⽚上传到服务器,得到⼀个ServerID有效期3天。妈的,上传到服务器,有什么⽤。
下载功能,更离谱,使ServerID从服务器下载⼀个⽂件,下载后,你得到⼀个localID。那下载下
来有什么⽤?只能放到img中显⽰⼀下。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。