公司项目中,要求实现上传身份证正反面照片功能。兼容pc端与手机端。pc端直接选择文件上传,在谷歌,火狐,safari等均没问题。
手机端可调用手机相机或选择图库,选择图库,各浏览器均没问题,手机拍照呢,在uc浏览器上就有问题了....
采用的是form表单提交的方式(后台要求),结果上传的两张图片一样,前一张被后一张覆盖了!!
经过分析,图片被覆盖掉,唯一的原因就是,拍照的过程中,手机占用同一块内存,这就是uc独特的u3内核机制导致的吧。
具体分析如下图所示:
对于input的file:拍照上传时,未保存在硬盘中,直接在内存中,占用同一块内存,导致二进制文件流被覆盖,
选择图库呢,因为是从硬盘中读取,每次使用时读取都会在内存中新开辟一个内存空间,所以,不会有覆盖的问题啦。
在测试的过程中呢,曾遇到个奇怪问题,拍照上传照片时好时不好????真是奇怪了,想了想可能是大小受限吧,后来上网查了下,form的post提交并没有大小限制,但是出现限制的原因,可能是tomcat里写的限制没有处理,结果和后端一沟通,果然是这个问题呀!机制解决~~
我本人是不太赞同form提交的,ajax提交的话就不会产生这种问题了。