uni调用chooseImage方法上传base64图片
因为后端需要的是file: (binary)类型的文件,直接使用chooseImage方法返回的数据不符合要求,所以在使用该方法的基础上,又调用了文件上传的方法UploadImage,把文件上传到服务器。
点击按钮,调用chooseImage
<button @click="chooseImage2"></button>
方法
chooseImage2
chooseImage2() {
let self = this
uni.chooseImage({
count: 1, //默认9
sourceType: ['album', 'camera'], //从相册选择、摄像头
success: function(res) {
self.imgShow = res.tempFilePaths[0]
self.handleImage()
// uni.navigateTo({
// url: '../food/ingredient'
// });
}
});
}
handleImage:限制图片大小,并调用上传图片的方法
async handleImage() {
if (this.imgShow.size / 1024 > 1024 * 5) {
// self.$api.msg("图片大于5M,请重新上传");
console.log("图片大于5M,请重新上传")
} else if (this.imgShow.size / 1024 > 1025) {
this.imgShow = await this.imgCompress(this.imgShow)
}
// this.$api.msg("服务器带宽有限,图片上传较慢,请耐心等候!")
let uploadFileRes = await this.UploadImage(this.imgShow)
console.log(JSON.parse(uploadFileRes))
},
UploadImage:上传图片
UploadImage: (img) => {
return new Promise((resolve, reject) => {
uni.uploadFile({
url: 'http://122.51.32.79:8004/hubu/food-info/identification-food',
filePath: img,
name: 'file',
success: (res) => {
resolve(res.data)
},
fail: (err) => {
reject('err')
}
});
})
}