使用uniapp上传图片并将图片转化成base64格式使用nodejs存入数据库

需要下载转格式的插件image-tools
链接: link

图片转base64

前端

<u-avatar :src="imgUrl" mode="square" @tap='openChooseImg'></u-avatar>
// 选择头像
			openChooseImg() {
				uni.chooseImage({
					count: 1, //最多可选择的张数
					sizeType: ["original", "compressed"], //可以指定是原图还是压缩图,默认二者都有
					sourceType: ["album", "camera"], //从相册选择,和摄像头功能,默认二者都有
					success: (res) => {
						console.log(res, "头像res");
						this.imgUrl = res.tempFilePaths[0]; //把选择的头像赋值给imgurl
						console.log(this.imgUrl, "this.imgUrl");
						pathToBase64(this.imgUrl) //图像转base64工具
							.then(base64 => {
								console.log(base64, 'base64');
								console.log(typeof(base64), "typeof");
								this.avatar = base64; //将文件转化为base64并显示
								this.avatarUpload(base64);
								// this.avatarUpload(base64); //同时将头像上传至数据库进行存储
							})
							.catch(error => {
								console.error(error)
							})
					},
				});
			},
			// 上传照片
			async avatarUpload(avatar) {
				const res = await uploadPic({
					pic: avatar
				})
				console.log(res)
				console.log("上传图片成功!")
			},

格式类似于
后端传入数据库

router.post('/uploadPic', (req, res) => {
    // const data = Object.assign({}, req.body)
    const data = req.body
        // console.log(data, "datapic")
    db.query('insert into picture_list(pic_content) values(?)', [data.pic], (err, mes) => {
        if (err) return console.log(err)
        console.log(mes)
        res.status(200)
        res.send(mes)
    })
})

数据库图片存储的表

返回的数据
其中insertId是存放图片的id,可以直接将这个id保存入用户的头像数据

将base64转化为文件

查询图片的base64并保存为文件并读取到前端的u-avatar中

后端

router.post('/dowmloadPic', (req, res) => {
    const data = req.body //Object.assign({}, req.body)
    db.query('select pic_content from picture_list where pic_id', [data.pic_id], (err, mes) => {
        if (err) return console.log(err)
            // console.log(data)
            // console.log(mes)
        res.status(200)
        res.send(mes)
    })
})

前端

// 从数据库读取图片转化为文件并显示
			async dowmPic(picID) {
				const res = await dowmloadPic({
					pic_id: picID
				})
				const base64 = res.data[0].pic_content
				console.log(base64)
				base64ToPath(base64).then(url => {
					console.log(url)
					// 直接显示到前端页面
					this.imgUrl = url
				}).catch(error => {
					console.error(error)
				})
			},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值