问题描述:
用户签名后,点击保存,上传成功后,再次获取数据。
因为后台接口的设置是:图片直接覆盖存储,也就是两个图片名称相同的。
这就会导致,上传,并重新获取数据后,视图没有更新。这就是微信小程序的图片缓存问题啦。
所以获取上传图片的时候,可以使用时间戳拼接在地址栏后面,拼接完成后,功能正常。但是又会出现另外一个问题,当快速保存签名图片之后再请求获取最新图片时候,会有几率发生获取不到最新图片的情况,这个时候保存图片的时候可以给保存成功后使用wx.showToast添加返回状态,并设置持续时间,状态消失后,等待1.5s后进行跳转到上一页。
而获取图片的时候,设置定时状态,图片加载到最新的图片后再展示。
保存图片:
wx.uploadFile({ url: url + api.saveImg, filePath: tempFilePath, name: 'file', method: "POST", header: { "TokenAuthorization": token, "Content-Type": "application/x-www-form-urlencoded", }, success(res) { var data = JSON.parse(res.data) if (data.code == 0) { wx.showToast({ title: '成功', icon: 'success', duration: 1500,//持续的时间 success: function () { setTimeout(() => { wx.navigateBack({ delta: 1 }) }, 1500) } }) } }
请求接口查询图片:
passAdjust() {
var that = this;
that.setData({
imgList: ''
});
const token = wx.getStorageSync('token')
wx.request({
url: url + api.getImg,
method: "GET",
header: {
"TokenAuthorization": token,
"Content-Type": "application/x-www-form-urlencoded", //post请求
},
success(res) {
if (res.data.code == 0) {
if (!res.data.data) { //如果返回的签名地址为空,弹窗关闭,否则反之。
that.setData({
show: false
})
wx.navigateTo({
url: '/pages/electronic-signature/electronic-signature',
})
} else {
const uploadFileServiceName =
wx.getStorageSync('uploadFileServiceName')
that.setData({
status: 1,
show: true,
});
setTimeout(() => {
that.setData({
imgList: uploadFileServiceName + res.data.data + '?V=' + new Date().getTime()
})
}, 400)
}
}
}
})
},