java图片上传转base64_图片上传转base64

本文介绍如何在Taro应用中实现图片上传,并将H5模式下的blob对象转换为Base64编码,以满足后端接口要求。通过Taro.chooseImage选择图片,再利用imgConvertBase64函数进行转换,适用于微信小程序和H5环境。
摘要由CSDN通过智能技术生成

做的过程中本来想用taro-ui里的那个图片上传,但是样式想自定义没搞定,结果后来就用Taro.chooseImage了。h5模式返回的是一个blob对象,然后自己转成base64了。微信小程序自己有方法。原来想用multipart的方式,奈何后端要求一次性要把所有的参数上送,直接上送是blob:http//xxxxx最后只好约定前端转成base64上送了。

jsx:

请拍摄有人像的一面

js:

uploadCard(fileType){

let _this = this;

Taro.chooseImage({

count: 1,// 默认9

sizeType: ['original', 'compressed'],// 可以指定是原图还是压缩图,默认二者都有

sourceType: ['album', 'camera'],// 可以指定来源是相册还是相机,默认二者都有

success: function(res) {

console.log(res)

// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片

let tempFilePaths = res.tempFilePaths;

let changeObj = {};

if(fileType==='fileJust'){//正

changeObj['zhengImgOpen'] = true;

}

if(fileType==='file'){//反

changeObj['fanImgOpen'] = true;

}

let changeFile = {};

changeFile[fileType] = tempFilePaths[0];//图片地址

//图片转base64

_this.imgConvertBase64(changeFile[fileType]).then(resp=>{

let base64 = {};

base64[fileType] = resp;

_this.setState((prevState)=>({

...changeObj,

formData:{

...prevState.formData,

...base64

}

}));

});

}

})

};

imgConvertBase64 = (fileSrc)=>{

return new Promise((resolve,reject)=>{

if(Taro.getEnv()==='WEAPP'){

console.log('微信小程序');

wx.getFileSystemManager().readFile({

filePath: fileSrc, //选择图片返回的相对路径

encoding: 'base64', //编码格式

success: res => { //成功的回调

let base64 = 'data:image/png;base64,' + res.data;

//console.log(base64);

resolve(base64);

}

});

}else if(Taro.getEnv()==='WEB'){

console.log('h5');

fetch(fileSrc).then(data=>{

const blob = data.blob();

return blob;

}).then(blob=>{

let reader = new window.FileReader();

reader.onloadend = function() {

const base64 = reader.result;

resolve(base64);

};

reader.readAsDataURL(blob);

})

}else{

resolve('');

reject('');

}

});

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值