zoukankan      html  css  js  c++  java
  • [技术博客]使用wx.downloadfile将图片下载到本地临时存储

    目标

    上一篇技术博客中,我们生成的海报中包含图片,这些图片是存储到服务器上的,而canvas的drawimage函数只能读取本地文件,因此我们在drawCanvas之前需要把服务器上的图片下载到本地临时存储,这里选择使用wx.downloadfile函数下载。

    代码展示

      //点击分享按钮之后触发的大函数。主要是使用downloadfile下载所需图像到本地,然后调用drawCanvas函数
      //由于异步加载不好控制,所以在这里进行串行下载 头像、原海报,然后drawcanvas,不在其它地方预先下载
      genPoster: function () {
        if (_this.data.imagePath==""){
          wx.showLoading({
            title: '等待图片下载',
          })
          //获取用户信息,下载头像
          console.log('下面开始获取用户信息,主要为了得到头像')
          util.$get('/users/current')
            .then((res) => {
              if (res.data.success) {
                _this.setData({
                  userInfo: res.data.data.data
                })
                console.log("获取的用户信息为:")
                console.log(_this.data.userInfo)
                console.log("得到用户信息,下面将这个头像下载到临时文件夹:")
                console.log(_this.data.userInfo.portrait_url)
                wx.downloadFile({
                  url: _this.data.userInfo.portrait_url, //头像资源
                  success: function (res) {
                    if (res.statusCode === 200) {
                      _this.setData({
                        touxiang: res.tempFilePath
                      })
                      console.log("成功下载头像到临时文件夹到:")
                      console.log(_this.data.touxiang);
    
                      console.log('下面将海报下载到临时文件夹:')
                      console.log(_this.data.img_url);
                        wx.downloadFile({
                          url: _this.data.img_url, //原竖版海报
                          success: function (res) {
                            if (res.statusCode === 200) {
                              _this.setData({
                                poster_old: res.tempFilePath
                              })
                              console.log("成功下载原海报到临时文件夹为:")
                              console.log(_this.data.poster_old)
                              wx.hideLoading();
                              _this.drawCanvas();
                            } else {
                              console.log("下载原海报返回的statusCode不是200")
                            }
                          },
                          fail: function (e) {
                            console.log('下载原海报失败', e)
                          }
                        })
                      }
                    } else {
                      console.log("下载头像返回的statusCode不是200")
                    }
                  },
                  fail: function (e) {
                    console.log('下载头像失败', e)
                  }
                })
              }
            })
        }
        else{
          console.log("之前画过海报了,也就是图片下载过了,现在直接drawCanvas,灰常快")
          _this.drawCanvas();
        }
      },
    

    重点讲解

    首先需要向服务器发送请求,得到图片资源的url,接着通过wx.downloadFile函数将url图片下载到本地临时存储,wx.downloadFile的官方文档是:https://developers.weixin.qq.com/miniprogram/dev/api/network/download/wx.downloadFile.html


    这里尤其需要注意一个问题,由于是异步加载,所以如果需要下载多个图片的话,建议串行进行。

  • 相关阅读:
    streamsets docker 安装试用
    使用graphql-code-generator 生成graphql 代码
    ORA-12537:TNS:connectionclosed错误处理过程
    解决Oracle 11gR2 空闲连接过多,导致连接数满的问题
    ORACLE定期清理INACTIVE会话
    Oracle session active 和 inactive 状态 说明
    如何查看数据库软件共创建了多少个库(实例)
    某表空间增长很快,但找不到是哪一个表造成的
    Oracle用户被锁定解决方法
    Oracle的sqlnet.ora文件配置
  • 原文地址:https://www.cnblogs.com/buaareadsun/p/11020314.html
Copyright © 2011-2022 走看看