小程序授权头像临时路径持久化
// 头像授权-需要用到 open-type="chooseAvatar"
<button open-type="chooseAvatar" @chooseavatar="onChooseAvatar"></button>
async onChooseAvatar(e) { //获取头像
// e.detail.avatarUrl 临时路径
const result = await uploadFilePromise(e.detail.avatarUrl);
// uploadFilePromise 改方法是封装好的 上传图片到服务器,如:oss 换取持久化头像地址
//至此 result 我们就获取到了 持久化地址下面就可以正常操作
//如:调用修改用户信息接口 修改头像
let data = {
head_portrait: result.resource_name
};
saveUserInfo(data).then(res => {
// 完成 可以进行 你需要的操作
});
}
// uploadFilePromise 封装方法 根据自己的需求修改
/**
* @baseUrl url地址
* @function uploadFilePromise
* @description 上传图片
* @param {String} url 本地路径
* @param {File} file 二进制文件流
* @return {void}
* @example
uni.chooseImage({
success(res){
console.log(res.tempFilePaths[0]);// 图片文件本地地址
uploadFilePromise(res.tempFilePaths[0],res.tempFiles[0]).then(res=>{
console.log('结果',res)
})
}
})
*/
export async function uploadFilePromise(url) {
url = Array.isArray(url) ? url[0] : url;
let data = {
returnPath:'true'
};
return new Promise((resolve, reject) => {
uni.uploadFile({
url: baseUrl + '/api/ali/uploadFile', // 接口地址 baseUrl 域名地址
type: 'POST',
// #ifdef H5
files: [{
name: 'file',
uri: url,
}],
header: {
token: //获取自己的token
},
// #endif
// #ifdef MP || APP
filePath: url,
name: 'file',
header: {
'content-type': 'multipart/form-data',
token: //获取自己的token
},
// #endif
formData: data,
success: (res) => {
let datas = JSON.parse(res.data);
resolve(datas)
},
fail(err) {
console.log(err);
reject(err)
}
});
})
}