vant van-uploader 微信内置浏览器 手机拍照 出现刷新或闪退

h5页面调用手机拍照 出现刷新或闪退

问题原因

根据产品业务,需要在h5页面调用手机的拍照,出现了页面刷新或闪退:

  1. 这是微信内置浏览器内存不足导致的,安卓手机此问题常见,尤其是红米低端机出现概率更高(自己就是用的红米手机);
  2. vant官网在van-uploader组件介绍页面的最下面也说了有这个问题;
  3. 使用input标签,调用拍照也是一样的页面刷新或闪退
  4. 是安卓自身的原因:链接 参考文章.

解决办法(使用van-uploader组件)

  1. van-uploader的标签加capture=“camera”,并限制格式result-type=“file”:
	   <van-uploader
          ref="uploaderRef"
          :before-read="handleBeforeRead"
          result-type="file"
          v-model="fileList"
          capture="camera"
          :afterRead="handleAfterRead"
          max-count="1"
      />
  1. 在handleBeforeRead方法时,对拍照图片进行压缩:
import Compressor from 'compressorjs'
// An highlighted block
return new Promise((resolve, reject) => {
   
       new Compressor(file, {
   
         //压缩质量, 0-1
         quality: 0.6,
         //转换的类型,默认为 image/png
         convertTypes: ['image/jpeg'],
         //需要压缩的起始大小,默认5M, 5 * 1000 * 1000
         convertSize: 5000000,
         //压缩成功后处理
         success(result) {
   
           resolve(result);
         },
         error(err) {
   
           console.log(err.message);
           proxy.$toast({
    type: 'fail', message: err.message })
           reject()
         },
       });
     });
  1. 在handleAfterRead方法时,返回的file是一个对象,并不是后端需要file文件流,需要file.file传给后端,且file.file可能不存在name,需要注意一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值