项目: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)
}
})
}