收藏
回答

wx.openDocument

问题模块
API和组件

将wx.downloadFile下载的路径保存在storage里面,发现在iOS7 plus 和 iOS8中,

第一次走wx.downloadFile下载之后,先缓存起来,再用wx.openDocument打开时能够预览成功;

第二次是预览完后返回到小程序中,直接从缓存里面直接读取文件的缓存路径,用wx.openDocument打开却不行。

没有报错!

具体的表现是 在iOS7 plus出现频繁,iOS8中必现,其他机型上没发现问题


最后一次编辑于  2017-11-16  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

5 个回答

  • 黄思程
    黄思程
    2017-11-16

    你好,请提供一下出现问题的机型和微信版本,以及能复现问题的简单代码示例。

    2017-11-16
    赞同
    回复
  • 南山隐者
    南山隐者
    2017-11-16

    出现问题的机型:iOS7 plus,iPhone 8p iOS11;  微信版本 6.5.16 

    这个是预览简历:

    previewFile: function(filePath, cb) {
        var that = this
        wx.openDocument({
          filePath: filePath,
          success: function(res) {
            typeof cb == "function" && cb();
          },
          fail: function(e) {
            toast.basic.showToast({
              title: '打开文件失败 :-)'
            }, that);
          },
          complete: function(e){
            console.log(e)
          }
        });
      },

    判断是否缓存中是否存在简历

    var attachmentId = attachmentInfo.attachmentId

                    var attachmentResumeCache = wx.getStorageSync('attachmentResumeCache')
                    console.log("校验")
                    console.log(attachmentResumeCache)
                    var existResume = attachmentResumeCache[attachmentId]
                    // 判断是否有缓存,有的直接从缓存中读
                    if(existResume){
                      wx.hideLoading()
                      that.previewFile(existResume);
                    }else{
                      /*
                        这一部分的代码是下载预览的
                       */
                    }
                  }else{
                    wx.navigateTo({
                      url: `../resume/preview?name=${dataset.name}&resumeId=${dataset.resumeId}`
                    })
                  }

    下载简历并且预览:

    wx.downloadFile({
              url: url,
              header: {
                'Authorization': token
              },
              dataType: "json",
              success: function(res) {
                var filePath = res.tempFilePath;
                attachmentResumeCache[attachmentId] = filePath;
                wx.setStorageSync('attachmentResumeCache', attachmentResumeCache);
                that.previewFile(filePath);
              },
              fail: function() {
                toast.basic.showToast({
                  title: '下载附件简历失败 :-)'
                }, that);
              },
              complete: function(e) {
                wx.hideLoading();
              }
            });


    2017-11-16
    赞同
    回复
  • 南山隐者
    南山隐者
    2017-11-16

    麻烦了

    2017-11-16
    赞同
    回复
  • 南山隐者
    南山隐者
    2017-11-16

    建议:

    1. 你可以在使用拉勾网 | 招聘求职找工作小程序,在 我的 -> 简历 -> 附件简历;这个预览是成功的;

    2. 使用拉勾面试百宝箱小程序(最好是借用一下你们公司面试官的账号,否则没有面试人信息),点击查看简历,这个预览就有问题了。


    两个预览的逻辑都是一样的,现在第二个小程序就出问题了。。。


    2017-11-16
    赞同
    回复
  • 南山隐者
    南山隐者
    2017-11-16

    应该是wx.openDocument的问题,以前是偶现,现在是在iOS8中必现

    2017-11-16
    赞同
    回复