收藏
回答

微信下载云存储的文件,保存到本地时使用wx.env.USER_DATA_PATH后不可添加常量变量

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.getFileSystemManager().saveFile 工具 7.0.21 2.12.2
//   这段代码,我在Android手机真机调试可以下载并且打开文件,但是在pc(我的是windows系统)只能到文件下载成功那一步,微信开发者工具中如果
//没有云储存接口(wx.cloud.downloadFile)下载之后本地接口(wx.downloadFile)再下载一遍的话也只能到文件下载成功那一步。
//现在可以在微信开发者工具和Android下载并打开文件。如下我再逐步列一下我的主要问题:
// 1.wx.getFileSystemManager().saveFile接口中filePath后不能直接添加上边定义的常量和变量,包括正则表达式。(主要问题1)
// 2.将常变量放到data里后可以放在filePath中,但只有手机端和微信开发者工具可用,但大文件还是想在pc端下载整合。
// 3.如果不适用正则表达式或添加文件名,直接在wx.env.USER_DATA_PATH后加储存位置的字符串,三者都可用,但是文件打不开,后期操作难度大。
// 4.后期操作无后缀文件的话,手机端可以放在相册里添加后缀,PC端直接就无法下载,打开后也是一个pdf文件,无法下载也无法编辑。对用户的操作难度加大,很不方便。
// 5.总结问题4:PC端想尽一切办法都不能加后缀打开文件,为什么手机可以PC不可以呢?(主要问题2)

wx.cloud.downloadFile({
  fileID: fileID, // 文件 ID
  // 下载云存储里的文件
  success(res){
    console.log("文件下载成功",res)
     // return
    // 因为直接调用wx.getFileSystemManager().saveFile接口没反应,我只好又加了个下载本地缓存的文件
    wx.downloadFile({
      url: res.tempFilePath,
      success(res){
        console.log(res)
        // return
        let zhanwei_id = that.data.array[0].zhanwei_id
                // 因为直接添加几个变量运行函数没有反应,所以我把几个变量都整合到一起存到data中
        that.setData({
          filePath: '/' + bianliangming(这个是变量名) + "文件名"(这个是字符串) + /\.[^\.]+$/.exec(res.tempFilePath)[0](这个是正则表达式),
        })
                // 现在获取到的tempFilePath才可以用了,我就开始调用全局文件接口
        wx.getFileSystemManager().saveFile({
          tempFilePath: res.tempFilePath,
                    // 一开始直接把变量写在wx.env.USER_DATA_PATH后,没反应,然后就把东西放在data里,这个时候手机端可以下载并打开了,但是windows还是没反应
          filePath: wx.env.USER_DATA_PATH + that.data.filePath,
                    // 下边这条语句是我一开始用的
          // filePath: wx.env.USER_DATA_PATH + "/" + bianliangming(这个是变量名) + "文件名"(这个是字符串) + /\.[^\.]+$/.exec(res.tempFilePath)[0](这个是正则表达式)
          success(res) {
            console.log('save ->', res) // 上传文件结果
            wx.showToast({
              title: '文件已保存至:' + res.savedFilePath,
              icon'none',
              duration: 1500
            })
            // 打开该文件
            wx.openDocument({
               filePath: res.savedFilePath,
              success: function (res) {
                console.log('打开文档成功')
              }
            })
          }
        })
       }
    })
              
  },
  fail(err){
    console.log("文件下载失败",err)
  }
})
最后一次编辑于  2020-12-11
回答关注问题邀请回答
收藏

2 个回答

登录 后发表内容
问题标签