taro兼容h5之上传图片及base64转换

51 篇文章 0 订阅
12 篇文章 0 订阅

项目:taro3+vue3+tarouivue3

场景:

上传图片,接口中的参数是图片转的base64

小程序上传图片

1、用chooseImage()获取到临时路径
2、把临时路径转成base64
3、临时路径可以直接显示出图片

小程序转换base64方法

1、Taro.getFileSystemManager().readFileSync(临时路径, ‘base64’)
2、arrayBufferToBase64
1不兼容h5, 2文档中说能兼容h5, 但是在这个接口中无效

h5上传图片

首页想到的是input file

方法一
<input class="input-file-h5" type="file" :id="id" accept="image/*" capture="camera" />
window.onload = function() {
  document.getElementById(id).onchange = function(e) {
    const box = document.getElementById(id)
    const boxIn = box.getElementsByClassName('weui-input')
    console.log(boxIn[0], 'boxIn[0]')
    const file = boxIn[0].files[0]
  }
}

然后用file去换base64, 但是这种上传方式对于页面只有一个input有效,多个就无效

方法二
<input
   class="input-file-h5"
   type="file"
   :id="id"
   accept="image/*"
   capture="camera"
   @change="onChange"/>
onChange(event) {
  console.log(event)
  const file = event.target.firstChild.files[0]
}

方法二对于页面有多个input也是可行的~

file的形式:
在这里插入图片描述

h5的临时图片显示:

将file.name转成base64即可显示

h5转换base64方法

1、js-base64 此项目无效
2、用 FileReader

/**
 * 转换base64
 * @param file blob类型
 */
export function getBase64(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader()
    let fileResult = ''
    reader.readAsDataURL(file)
    reader.onload = () => {
      fileResult = reader.result
    }
    reader.onerror = error => {
      reject(error)
    }
    reader.onloadend = () => {
      resolve(fileResult)
    }
  })
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Misha韩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值