微信小程序canvas个人签名上传图片后,前端请求图片展示,展示的是旧数据图片,不是最新的图片。

问题描述:

用户签名后,点击保存,上传成功后,再次获取数据。

因为后台接口的设置是:图片直接覆盖存储,也就是两个图片名称相同的。

这就会导致,上传,并重新获取数据后,视图没有更新。这就是微信小程序的图片缓存问题啦。

所以获取上传图片的时候,可以使用时间戳拼接在地址栏后面,拼接完成后,功能正常。但是又会出现另外一个问题,当快速保存签名图片之后再请求获取最新图片时候,会有几率发生获取不到最新图片的情况,这个时候保存图片的时候可以给保存成功后使用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)
                    }
                }
            }
        })


    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值