微信 html 选不上文件,微信内网页某些安卓手机不能上传图片文件的问题

本文介绍了在某些安卓4.4.1/4.4.2系统中,微信内置浏览器HTML5文件上传功能失效的问题。为了解决这个问题,作者提出了将图片转换为Base64字符串,通过前端JS读取文件并POST到服务器,服务器端再将Base64字符串解析并保存为图片的方法。提供了前端JS和后端C#的代码示例。
摘要由CSDN通过智能技术生成

最近的一个项目是微信公众号关联的网站,自然用新技术HTML5 了。

在某个手机发布信息的页面中,却碰到了一个诡异的问题。

在某些安卓手机上无法使用上传图片功能,你怎么点都没用。

微信并没有对type=file做任何特殊处理。但是在Android 4.4.1/4.4.2系统中,这的确没法使用。其它版本中如果客户端如果需要对H5的 标签做支持,即在H5支持选择文件的功能,可以通过重写WebViewClient非public的openFileChooser方法来实现。可在4.4.1/4.4.2系统中,该回调方法被废弃,客户端无法捕获用户在H5页面上对标签的点击。

只有自己另外想办法解决了。

无意中看到可以把读取文件这里的图片文件转成base64字符串,然后POST到服务器上,在服务器上解析这个字符串再转存为图片文件。

另外看到有些说法,说微信也是这样做的,想一想这样做确实有道理,为安全考虑确实是这样的。

网上的没有找到完整的 C#的例子。只有自己弄了。

下面贴代码

前端:

JS代码:

在上传前可以加一些验证是否为图片文件,还有上传文件数、大小等等的判断。

function fileCountCheck(obj){

if (obj.files && obj.files[0]) {

var FR = new FileReader();

FR.onload = function (e) {

var ImageString = e.target.result;

//这个ImageString 就是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值