问题:在JNY-AL10型号的华为手机下,微信版本8.0.20版本中调用小程序wx.uploadFile API时,会出现图片上传成功并成功返回上传后链接,但是该链接图片无法查看。业务表现不正常。
业务表现:用户选择图片,上传的图片无法显示,后台访问图片链接无法显示。
实现方式:用户选择图片使用wx.chooseMedia接口,取得图片tempFilePath并调用wx.uploadFile接口,该接口URL配置为后端上传接口(目前已排除后端接口问题),后端返回图片链接后,前端展示。
技术栈:UniAPP
尝试排除问题:
1、更换写法,将uni.chooseImage更换为wx.chooseMedia,将uni.uploadFile更换为wx.uploadFile,结果是一样的。
2、其他绝大部分手机:小米、iPhone、华为是无法复现问题,PC模拟器也无法复现问题。
3、排除接口超时、图片太大、OSS存储等问题。
4、测试将无法在本小程序上传的图片上传到其他小程序中,其他小程序也无法上传。
实例代码:
UniAPP实现:
async chooseImage() {
const that = this
uni.chooseImage({
success: (chooseImageRes) => {
const tempFilePaths = chooseImageRes.tempFilePaths;
uni.uploadFile({
url: 'http://#/api/front/user/img', //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'files',
header: {
'Authori-zation': "76dc6****df83e"
},
success: (uploadFileRes) => {
console.log(uploadFileRes.data);
}
});
}
});
},
小程序原生方式:
const that = this
//照片选择器
await wx.chooseMedia({
// count: 20-that.checkeddata.length-that.noCheckdata.length-that.rejectList.length,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
mediaType:['image'],
success(res) {
const tempFilePaths = res.tempFiles
for (let i = 0; i < res.tempFiles.length; i++) {
setTimeout(()=>{
wx.uploadFile({
url: 'http://#/api/front/user/img', //仅为示例,非真实的接口地址
filePath: tempFilePaths[i].tempFilePath,
name: 'files',
header:{
'Authori-zation':that.$store.getters.token
},
success (res){
const data = res.data
console.log(res,'上传结果')
that.btnVisible=false
that.init()
},
fail(err) {
uni.showToast({
title:err,
icon:"none"
})
}
})
},300)
}
uni.showToast({
title:'上传成功',
icon:"success"
})
}
})
问题手机微信版本
问题手机系统版本
后台访问该图片
无法在该机型上传的图片(部分图片是可以正常上传的,但是传这几张问题必现)
大佬,后来这个问题有解决吗