本地图片上传前预览(转64位)
html部分
<!-- 预览的图 -->
<img :src="preview" class="preview" crossorigin="anonymous" v-if="preview" alt="" />
<input
@change="imageUploadClick"
type="file"
apture="camera"
accept="image/jpeg,image/jpg,image/png"
/>
js部分
imageUploadClick(ev) {
let file = ev.target.files[0]
this.file = ev.target.files[0]
if (
file.type === 'image/png' ||
file.type === 'image/gif' ||
file.type === 'image/jpg' ||
file.type === 'image/jpeg'
) {
this.readImg(ev) //预览图片
} else {
this.$alertMsg('仅支持png,jpg,jpeg格式图片文件上传')
}
},
readImg(event) {
let file = event.target.files[0]
this.uploadName = file.name
let reader = new FileReader()
// 转base64
reader.onload = e => {
//
this.preview = e.target.result
}
reader.readAsDataURL(file)
},
64位图片转成二进制流
//baseurl就是图片地址 最后返回的是数据流 dataURLtoBlob(baseurl) { let arr = baseurl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } return new Blob([u8arr], { type: mime }) } 将转成二进制流的图片上传 例如: let formData = new FormData() formData.append('file', this.dataURLtoBlob(图片地址)) //getUploading发送上传请求 let img = await getUploading(formData)