△ 前部分先大致说下需要注意的点(便于理解,时间宽裕可收藏后查看),后部分直接放代码实现,着急的小伙伴可以直接移步后部分。

一. 使用微信小程序提供的api(注意顺序,先下载,再打开)

(1-1).wx.downloadFile 下载文件资源到本地(临时的文件,退出即销毁)

△ 客户端直接发起一个 HTTPS GET 请求,返回文件的本地临时路径 (本地路径),单次下载允许的最大文件为 200MB
△ 使用前请注意阅读微信小程序官网文档指南-网络:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html
△ 在用到此 api 时,需要小程序在对应的微信公众后平台添加合法域名白名单,否则将会在编译器中报错,获取不到网络文件!!!(非常重要!!!)操作方法路径为:开发 - 开发管理 - 开发设置 - 服务器域名 - downloadFile合法域名。

(1-2). wx.openDocument 新开页面打开文档

△ 微信客户端 7.0.12 版本前默认显示右上角菜单按钮,之后的版本默认不显示,需主动传入 showMenu
△ 指定文件类型打开文件有:doc、docx、xls、xlsx、ppt、pptx、pdf

(1-3). 自定义修改打开文件的文件名称:

官方文档并没有明确给出直接修改打开文件的参数,查阅众多小伙伴智慧的结晶(有说使用rename,有说先用saveFile先将文件保存至本地之后再自定义文件名),之后还是觉得可能会有更好的办法实现。终于在知识的海洋里,总结了一个改动最少且是好用的方法。在官方文档里,请注意wx.downloadFile这个api中的filePath参数:
在这里插入图片描述

二. 上菜:

// 点击事件
openFile(item) { // item为当前点击的事物对象
    let file = decodeURIComponent(item.pathUrl); // 解码(注意:涉及到文件名中有中文需要转码)
    file = this.getFilePathName(file); // 将文件路径过滤,格式为【文件名+.后缀名】
    // 加载状态
    uni.showLoading({
      title: '文件打开中',
      mask: true
    });
    let _this = this;
    // 预览网络文档
    wx.downloadFile({
      url: item.pathUrl, // 文件的本身url
      filePath: wx.env.USER_DATA_PATH + '/' + file, // 本地自定义的文件名
      success: function (res) {
        let filePath = res.filePath; // 微信临时文件路径(这里要使用自定义的名字文件名,否则打开的文件名是乱码)
        wx.openDocument({
          filePath: filePath,
          showMenu: true,  // 是否显示右上角菜单按钮 默认为false(看自身需求,可要可不要。后期涉及到右上角分享功能)
          success: function () {
             _this.$util.toast({ title: '打开文件成功' });
          },
          fail: function() {
            _this.$util.toast({ title: '打开文件失败,请稍后重试' });
          }
        });
        uni.hideLoading();
      },
      fail: function() {
        _this.$util.toast({ title: '打开文件失败,请稍后重试' });
        uni.hideLoading();
      }
    });
},
// 文件路径过滤【文件名+.后缀名】
// 例如:哈哈.pdf
getFilePathName(path) {
let pos1 = path.lastIndexOf('/');
let pos2 = path.lastIndexOf('\\');
let position  = Math.max(pos1, pos2);
if ( position< 0 )
  return path;
else
  return path.substring(position+ 1);
}

△ 查看下效果:

【修改前】文件名是一串随机的名字
在这里插入图片描述【修改后】文件名修改成功
在这里插入图片描述

查看最终文件打开的效果还是要在手机上预览打开。
有疑问请直接指出。
整理不易! 不要吝惜你的小手,有用就点赞或收藏吧。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐