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')
						}
					});
				})
			}
posted @ 2022-04-14 11:23  黑蛋的博客  阅读(1417)  评论(0编辑  收藏  举报