返回
wx.canvasToTempFilePath压缩上传图片,iOS发不起请求?玄学来了!
Android
2023-12-20 08:43:13
微信小程序 wx.canvasToTempFilePath 压缩上传图片时 iOS 发不起请求?玄学来了!
在开发微信小程序时,使用 wx.canvasToTempFilePath
压缩图片并上传时,你会发现 Android 一切正常,开发工具也没问题,唯独 iOS 不正常。然而,iOS 压缩也成功了,却发不起网络请求,卡在加密步骤,无法执行后续请求方法。真是玄学!
出现问题的原因
经过一番排查,罪魁祸首浮出水面:iOS 微信版本太低 。当 iOS 微信版本低于 7.0.20 时,就会出现这个问题。
解决办法
解决这个问题有两种方法:
- 将 iOS 微信版本升级 到 7.0.20 或更高。
- 使用
wx.uploadFile()
方法上传图片 ,而不是wx.request()
方法。
使用 wx.uploadFile()
方法上传图片
使用 wx.uploadFile()
方法上传图片的步骤如下:
// 选择要上传的图片
wx.chooseImage({
count: 1,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: function(res) {
const tempFilePath = res.tempFilePaths[0];
// 获取文件系统管理器
const fileSystemManager = wx.getFileSystemManager();
// 临时保存图片到本地
fileSystemManager.saveFile({
tempFilePath,
success: function(res) {
const savedFilePath = res.savedFilePath;
// 上传图片
wx.uploadFile({
url: 'https://example.com/upload',
filePath: savedFilePath,
name: 'file',
success: function(res) {
console.log('上传成功');
},
fail: function(res) {
console.log('上传失败');
}
});
},
fail: function(res) {
console.log('保存失败');
}
});
}
});
总结
这就是 wx.canvasToTempFilePath
压缩上传图片时 iOS 发不起请求问题的解决办法。现在,iOS 微信版本只要满足要求,你就可以快乐地压缩上传图片了!
常见问题解答
-
为什么 iOS 微信版本低于 7.0.20 会出现这个问题?
答案未知,可能是微信官方的 bug。
-
除了使用
wx.uploadFile()
方法,还有其他解决办法吗?没有。
-
为什么
wx.canvasToTempFilePath
压缩后图片质量会下降?因为压缩会减少图片文件的大小。
-
如何选择合适的压缩质量?
根据图片的用途和存储空间要求决定。
-
上传图片时遇到错误,怎么办?
检查文件路径、网络连接和图片格式是否正确。