微信小程序 文件下载、打开、转发

一.下载文件

 wx.downloadFile({
      url: 'https://img.haihaina.cn/月度支出表.xls', 
      filePath: wx.env.USER_DATA_PATH + '/'+ '自定义名字.xlsx',
      success(res) {
        console.log('downloadFile',res)
        const filePath = res.tempFilePath
        wx.openDocument({
          filePath: filePath,
          fileType: 'xlsx',
          success: function(ress) {
            console.log('打开文档成功',ress)
          },
          fail: function(err) {
            console.log('保存失败:', err)
          }
        })

二.转发文件

  这里 wx.shareFileMessage只能在真机上才能进行调试,否则报错。

    wx.downloadFile({
      url: 'https://img.haihaina.cn/数据.xls', // 下载url
      success (res) {
        console.log('ressss',res)
        if(res.statusCode == 200) {
          console.log('res.statusCode',res)
            // that.openFileEvs(res)
            wx.shareFileMessage({
              filePath: res.tempFilePath,
              success(data) {
                console.log('转发成功!!!',data)
              },
              fileName:'自定义文件名字.xlsx',
              fail: console.error,
            })
        }
      },
      fileName:'导出病例',
      fail: console.error,
    })

三.下载、转发文件

    wx.downloadFile({
      url: url, // 下载url
      filePath: wx.env.USER_DATA_PATH+ '自定义文件名字.xlsx',
      success (res) {
        console.log('ressss',res)
        if(res.statusCode == 200) {
          console.log('res.statusCode',res)
            // that.openFileEvs(res)
            wx.shareFileMessage({
              filePath: res.tempFilePath,
                fileType: 'xlsx',
              success(data) {
                console.log('转发成功!!!',data)
              },
              fileName:'自定义文件名字.xlsx',
              fail: console.error,
            })
        }
      },
      fileName:'导出病例',
      fail: console.error,
    })

四.下载文件至本地,并打开文档

  打开文件苹果手机需要添加**“ fileType: fileStr,”**指定文件类型,否则无法打开;android手机可加可不加。

   downloadfile(e){
    var url = e.currentTarget.dataset.url;
    //下载文件,生成临时地址
    wx.downloadFile({
      url: url, 
      success(res) {
        // console.log(res)
        //保存到本地
        wx.saveFile({
          tempFilePath: res.tempFilePath,
          success: function (res) {
            const savedFilePath = res.savedFilePath;
            // 打开文件
            wx.openDocument({
              filePath: savedFilePath,
              //fileType: fileStr,//docx、zip、xlsx等
              success: function (res) {
                console.log('打开文档成功')
              },
            });
          },
          fail: function (err) {
            console.log('保存失败:', err)
          }
        });
      }
    })
  },

四.接收后台返回的文件流并打开

download(){
    wx.showLoading({
      title: '加载中',
    })
    wx.request({
      url: '', //调用后台接口的全路径
      data: {memberId: this.data.member.id},
      method: "GET",
      header: {
        'Content-type': 'application/x-www-form-urlencoded',
        'Cookie': app.globalData.userInfo && app.globalData.userInfo.cookie ? app.globalData.userInfo.cookie : '',
      },
      responseType: 'arraybuffer', //此处是请求文件流,必须带入的属性
      success: res => {
        if (res.statusCode === 200) {
          const fs = wx.getFileSystemManager(); //获取全局唯一的文件管理器
          fs.writeFile({
            filePath: wx.env.USER_DATA_PATH + "/身体成分报告.pdf", // wx.env.USER_DATA_PATH 指定临时文件存入的路径,后面字符串自定义
            data: res.data,
            encoding: "binary", //二进制流文件必须是 binary
            success (res){
              wx.openDocument({ // 打开文档
                filePath: wx.env.USER_DATA_PATH + "/身体成分报告.pdf",  //拿上面存入的文件路径
                showMenu: true, // 显示右上角菜单
                success: function (res) {
                  setTimeout(()=>{wx.hideLoading()},500)
                }
              })
            }
          })
        }
      }
    })
  }

你可能感兴趣的:(微信小程序,微信小程序,小程序)