微信小程序中预览文档不同平台全文档的兼容处理

微信小程序预览文档解决方案

微信小程序中有预览文档的API,但缺点是只能预览固定的几种格式,如下所示

在这里插入图片描述
官方文档地址:wx.openDocument()

如果需求是打开一个.txt文档,这种方法就行不通了,那么怎么办呢?

当然是用万能的webVIew,直接把文档链接放到webView中,绝大多数的时候都能打开,至少我还没遇到过打不开的,如果有人遇到过可以在评论区留言哦。但是用webView也有缺点,我在小程序中做了具体测试,不同文件,不同打开方式的体验,大家可以扫码试一下差别

那么就需要有一种方式,如果能用微信API打开的时候就用API,如果不能打开的时候就跳转webView打开,具体的判断代码如下:

//测试文档地址:http://www.cztouch.com/upfiles/soft/testpdf.pdf
openFile: function (e) {

    var fileUrlStr = this.data.fileUrl

    var isSupport = false
    if (fileUrlStr.indexOf(".doc") >= 0 || fileUrlStr.indexOf(".docx") >= 0 || fileUrlStr.indexOf(".xls") >= 0 || fileUrlStr.indexOf(".xlsx") >= 0 || fileUrlStr.indexOf(".ppt") >= 0 || fileUrlStr.indexOf(".pptx") >= 0 || fileUrlStr.indexOf(".pdf") >= 0) {
      isSupport = true
    }
    if (!isSupport) {
      wx.navigateTo({
        url: './fileWebView/fileWebView?fileUrl=' + fileUrlStr
      })
      return;
    }

    try {
      var res = wx.getSystemInfoSync()
      if (res.platform == "android" || res.platform == "devtools") { //ios 直接用webView方式打开文档
        // console.log("downLoadFile文件地址是:", fileUrlStr);
        var typeStr = ''
        if (fileUrlStr.indexOf(".doc") >= 0) {
          typeStr = 'doc'
        } else if (fileUrlStr.indexOf(".docx") >= 0) {
          typeStr = 'docx'
        } else if (fileUrlStr.indexOf(".xls") >= 0) {
          typeStr = 'xls'
        } else if (fileUrlStr.indexOf(".xlsx") >= 0) {
          typeStr = 'xlsx'
        } else if (fileUrlStr.indexOf(".ppt") >= 0) {
          typeStr = 'ppt'
        } else if (fileUrlStr.indexOf(".pptx") >= 0) {
          typeStr = 'pptx'
        } else if (fileUrlStr.indexOf(".pdf") >= 0) {
          typeStr = 'pdf'
        }
        if (typeStr == '') {
          wx.navigateTo({
            url: './fileWebView/fileWebView?fileUrl=' + fileUrlStr
          })
          return;
        }
        wx.showLoading({
          title: '正在加载...',
        })
        wx.downloadFile({
          url: fileUrlStr,
          success: function (res) {
            var filePath = res.tempFilePath; // 小程序中文件的临时文件
            wx.openDocument({
              filePath: filePath,
              fileType: typeStr,
              success: function (res) {
                console.log('打开文档成功' + JSON.stringify(res))
              },
              fail: (e) => {
                console.log('打开文档失败:' + JSON.stringify(e));
                var errMsg = e.errMsg
                wx.showToast({
               	  icon: 'none',
                  title: errMsg
                })
              },
              complete: function (s) {}
            })
          },
          fail: function (error) {
            console.log('下载失败:' + JSON.stringify(error));
            var errMsg = error.errMsg
            wx.showToast({
              icon: 'none',
              title: errMsg
            })
          },
          complete: function (s) {
            wx.hideLoading()
          }
        })
      } else { //iOS直接webview 打开文档
        wx.navigateTo({
          url: './fileWebView/fileWebView?fileUrl=' + fileUrlStr
        })
      }
    } catch (e) {
      wx.navigateTo({
        url: './fileWebView/fileWebView?fileUrl=' + fileUrlStr
      })
    }
  },

可以看到判断在iOS端的时候不用这个API打开,具体原因就是iOS文档限制太多,当时我写这块需求的时候好像文档限制是不能打开超过15M大小的文档,随着小程序的不断更新,现在不知道变成什么了,反正当时出问题太多,就直接把iOS平台的都换成了webView打开

另贴出我的小程序码,欢迎大家体验

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
养殖企业网站管理系统(含小程序)是一款开源的THinkphp5.0 的 Blog系统,其衍生于优秀的内容管理系统易优cms。 养殖企业网站管理系统(含小程序)秉承了易优CMS的先进设计理念,并且专注于养殖企业。 养殖企业网站管理系统(含小程序)特点: 简单方便 养殖企业网站管理系统(含小程序)安装十分方便,只需输入域名,然后再点两次鼠标,期间填入一些必要的安装信息就可以轻松完成整个安装过程。 使用十分便捷,安装后进后台,无需事先进行任何设置操作。 要进行网站设置也十分简单,几分钟就可以完成。 养殖企业网站管理系统(含小程序)功能介绍: 1、会员系统 2、支付功能 3、标签功能 4、熊掌号提交功能 5、文章发布功能 6、SEO设置功能 7、多语言版(后台一键开启) 8、插件功能 9、多语言功能 10、水印功能 养殖企业网站管理系统(含小程序)安装环境要求: 操作系统:Linux/Unix/Windows 软件环境:Apache/Nginx/IIS + PHP 5.5~7.1 + MySQL 5.1 及以上 本地电脑推荐使用PHPstudy安装,及安装在合适的网站空间、虚拟主机上。 默认后台 域名/login.php 养殖企业网站管理系统(含小程序)更新日志: bulid4012 1、[安]修复已知存在的安漏洞; 2、[新增]广告位置的多种类型,适用于片碎化管理; 3、[新增]批量新增Tag标签的功能; 4、[新增]发布/编辑视频文档时,支持批量导入视频链接的功能; 5、[新增]内置腾讯云COS对象存储的逻辑,可以安装COS插件使用; 6、[新增]内置升级模式,可选择升级新版本,也可选择只升级安补丁; 7、[新增]整点秒杀、优惠券(仅限于可视化商城小程序插件内使用); 8、[新增]商品评价功能,请参考comment标签手册(仅限于专业版商业授权); 9、[新增]商城退换货售后处理(仅限于专业版商业授权); 10、[新增]内置问答悬赏模型(仅限于专业版商业授权); 11、[优化]后台更多功能加入到管理员权限控制里; 12、[优化]tag列表页不存在的URL直接显示404; 13、[优化]后台会员列表支持用户名或昵称搜索; 14、[优化]前台列表页调用arclist标签后,不会生成多余的分页静态文件; 15、[优化]管理员可以预览待审核稿件的逻辑,保护内容隐私被盗取; 16、[优化]插件内置升级前后置方法,便于更好的插件在线升级; 17、[优化]后台更多功能新增通知管理入口; 18、[优化]后台栏目支持上级移动,栏目保持最多3级的逻辑; 19、[优化]后台商品规格的规格值支持是否同步更新; 20、[优化]多图上传的用户体验; 21、[优化]广告管理逻辑体验; 22、[修复]在IE系列浏览器,会员升级支付无法进行; 23、[修复]样式影响了留言导出按钮被隐藏; 24、[修复]微站点开启之后,手机端会员心无法退出的问题; 25、[修复]回收站还原文档报错的问题; 26、[修复]视频模型发布文档时不显示编辑器的问题; 27、[修复]部分前台模板的手机端收藏弹窗的兼容性; 28、[修复]后台编辑会员时,没有邮箱或手机属性时报错; 29、[修复]微信支付支持异步回调,确保用户行为断不影响业务自动处理; 30、[修复]后台站内信通知删除报错的问题; 31、[修复]做了一些已知问题的修正和完善;

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值