uploadFilePromise是处理图片压缩的方法,file格式是这种{name: "4.9.jpg",size: 5171299,thumb: "blob:http://localhost:8081/a1d067f8-fdbd-4374-8497-96ddb761ec84",type: "image",url: "blob:http://localhost:8081/a1d067f8-fdbd-4374-8497-96ddb761ec84"}
compress这个是插件市场下载的压缩插件,这个插件传入file.url并设置好要压缩的大小后会返回一个bob 文件形式跟file.url一样的,然后把这个boob文件通过参数filePath传给后端后端接收到文件名称就有问题,如果是不压缩filePath直接传file.url就没问题。后端是用MultipartFile这个东西去接收的,我还尝试过另外一款插件helang-compress,这个插件跟compress唯一不同就是压缩后返回的是base64文件,我把返回的base64文件转成blob后上传也是后端接收到文件名称就有问题。请教下各位大佬,是啥原因。
async uploadFilePromise(file) {
let compressImgRes = file.url
if (file.size / 1024 > 1024) {
// 单张压缩 ,
compressImgRes = await this.$refs.compress.compress({
src: compressImgRes,
maxSize: 1024,
fileType: 'jpg',
quality: 1,
minSize: 640
})
}
return new Promise((resolve, reject) => {
console.log('file.url==', compressImgRes, file.name)
uni.uploadFile({
url: config.upLoadUrl,
name: 'file',
filePath: compressImgRes,
header: {
'Authorization': 'Bearer ' + uni.getStorageSync('Token') ?? ' ',
},
success: (res) => {
setTimeout(() => {
res = JSON.parse(res.data);
resolve(res.url)
}, 1000)
},
fail(fail) {
console.log("fail", fail)
}
});
})
},
0 个回复