uniapp/vue中将base64图片转为文件

效果图:

实现功能:将签字返回的base64图片转为文件

 1.绑定input

<view class="realIdFront" style="margin-top: 10px;">
				<Signature ref="sig" v-model="sign" @input='input'></Signature>
			</view>

2.给事件传参,进行打印结果

			// 上传签名图片base64
			input(e) {
				var that = this
				console.log(e, '里面有什么');
				let timestamp = new Date().getTime();
				let sunumber = Math.floor(Math.random() * 999);
				var file = this.base64ToFile(e, timestamp + sunumber)
				console.log(file, '转换完的file');
				uni.uploadFile({
					url: that.imgbaseUrl + "sys/common/upload",
					name: 'file',
					file: file,
					fileType: 'image',
					formData: {
						'user': 'test' // 上传附带参数
					},
					success: (uploadFileRes) => {
						console.log("上传照片res", uploadFileRes)
						console.log('message', uploadFileRes.data.message);
						let path = JSON.parse(uploadFileRes.data).message
						console.log(path, "上传图片之后");
						that.uploadSign = path
						//20230728093836_1690508316394.jpg
						// that.preImgUrl.push(path)
						// uni.$emit('image', that.preImgUrl.join(','))
					},
					fail: (res) => {
						console.log('上传失败', res)
					},
				})
				// this.signimage = baseString.name
			},
			//base64转flie
			base64ToFile(base64, name) {
				if (typeof base64 != 'string') {
					return;
				}
				var arr = base64.split(',')
				var type = arr[0].match(/:(.*?);/)[1]
				var fileExt = type.split('/')[1]
				var bstr = atob(arr[1])
				var n = bstr.length
				var u8arr = new Uint8Array(n)
				while (n--) {
					u8arr[n] = bstr.charCodeAt(n)
				}
				return new File([u8arr], `${name}.` + fileExt, {
					type: type
				})
			},

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值