我有这么一个场景:使用 canvas 绘制了二维码图片,然后使用 uni.canvasToTempFilePath 保存为临时文件,最后通过 wx.shareFileMessage 分享图片到好友,一切进行得很顺利,没有任何报错。就是图片发给好友后 文件类型显示?问号,应该时无法识别文件类型。
安卓端真机运行
代码如下:
onShare(e) {
const that = this
uni.canvasToTempFilePath({
x: 0,
y: 0,
width: that.canvasWidth,
height: that.canvasHeight,
destWidth: that.qrWidth,
destHeight: that.qrHeight,
canvasId: that.canvasId,
fileType: 'jpg',
success (res) {
console.log(res)
// 到这里时正常的的, tempFilePath 已经保存到本地
let tempFilePath = res.tempFilePath;
// 必须要 加这玩意 ,否则触发不了 wx.shareFileMessage,我也不知道为什么??
wx.showActionSheet({
itemList: ['分享文件'],
success: function(res) {
if (res.tapIndex === 0) {
wx.shareFileMessage({
fileName: '二维码.jpg',
filePath: tempFilePath,
success: function(res) {
// 分享时成功的 就是 显示?未知文件
console.log('分享成功', res)
},
fail: function(res) {
console.log('分享失败', res)
}
})
}
}
})
}
})
}
手机安卓端:
但是电脑端显示正常:
怎么解决?uni.canvasToTempFilePath 已经是临时文件,难道再要 还要 wx.downloadFile 下载一次,再 wx.shareFileMessage 分享吗?再说了, wx.downloadFile 也不能下载 weixin:// 协议啊?
还有一个更为愚蠢得 办法 就是 把 uni.canvasToTempFilePath 得到得临时文件上传到服务器,再通过 wx.downloadFile 把服务器的 文件下载到本地,最后在 wx.shareFileMessage 分享给好友。。
就差这个没做了。