安装image-tools 图像转换工具,可用于图像和base64的转换
安装
npm i image-tools --save
引用
import { pathToBase64, base64ToPath } from ‘image-tools’
具体代码
let id = 1
this.downloadFiles(id);
// 1 通过id获取服务器图片
async downloadFiles(id) {
//2 获取的图片长这样 123456.png
let result = await downloadFile(id);
//3 图片加上服务器地址
let url = this.requestUrl(API前缀) + result.url;
//4 将图片先转换成base64格式
pathToBase64(url)
.then(base64 => {
// console.log(base64)
let fileStream = this.base64toFile(base64, '签名')
console.log(fileStream)
//6 把文件流传给后端
this.uploadFile(this.requestUrl, fileStream)
})
.catch(error => {
console.error(error)
})
},
//5 然后再把base64转成文件流
base64toFile(dataurl, filename = 'file') {
let arr = dataurl.split(',')
let mime = arr[0].match(/:(.*?);/)[1]
let suffix = mime.split('/')[1]
let bstr = atob(arr[1])
let n = bstr.length
let u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], `${filename}.${suffix}`, {
type: mime
})
},
//请求后端接口
uploadFile(requestUrl, file) {
console.log(file)
console.log('进来了')
uni.uploadFile({
url: requestUrl + 'a/b/c', //服务器地址
file: file,
name: 'cfName',
header: {
'authorization': uni.getStorageSync("user_token")
},
success: (uploadFileRes) => {
console.log('uploadFileRes')
console.log(uploadFileRes)
},
fail:(res) => {
console.log(res)
}
});
},