有一次想做一个html5的图片上传功能,主要是依赖<code><input type="file"></code>来选择本地的图片。开始一切都很顺利,在浏览器中,在淘宝等容器中,都能如预期进行文件选择和上传。在ios系统下的app中也都工作正常,但是在一个安卓app中,无论怎么尝试选择文件,都始终出不来。
我给input的onchange事件打了个<code>alert()</code>,点击时也没有任何反应。看来是<code><input type="file"></code>在这个容器中根本就不工作。
经过一番检索,发现这其实是个非常老的问题了(惭愧)。是安卓app的webview默认屏蔽了该控件的使用,有些安卓app之所以能支持文件选择和上传,主要可能是有可能采取了如下措施之一:
(2)提供了js bridge来供web页面调用
所以,单从前端技术上是解决不了这个问题的。
这个问题之所以不太好排查,一方面跟手机端的图片上传功能我不太常用到有很大关系,另一方面也因为见到一些其它的app容器能支持该功能,所以思维在习惯上已经形成定势,误以为这是webview默认就支持的。
末了,顺便提醒一句,下次进行类似功能的需求评审,别忘了先了解下相应的app容器是否支持该功能,如果没有,则需要找到相应的客户端开发同学评估一下工时,以免造成影响项目进度的风险哟!