uniapp 在应用内如何使用 plus.runtime.openfile 打开文件

在uniapp开发中,使用plus.runtime.openFile打开本地文件时遇到问题。按照文档写法调用该方法后,文件无法正常打开,控制台也没有报错信息。请问正确的调用方式是什么?需要特别注意哪些参数配置?比如文件路径格式是否需要特殊处理,或者是否需要提前进行权限申请?能否提供一个可运行的示例代码?

2 回复

使用 plus.runtime.openFile 打开文件,需传入文件路径。示例代码:

plus.runtime.openFile('/storage/emulated/0/test.pdf', function(e) {
  console.log('打开成功');
}, function(e) {
  console.log('打开失败:' + e.message);
});

注意:文件路径需为绝对路径,且应用需有文件访问权限。


在 UniApp 中,plus.runtime.openFile 是 HTML5+ API 提供的方法,用于在移动设备上打开本地文件(如 PDF、图片、文档等)。以下是使用方法和注意事项:

基本用法

  1. 获取文件路径:首先确保文件路径有效(如从 plus.io 接口或文件选择器获取)。
  2. 调用 openFile:传入文件路径,系统会自动用默认应用打开文件。
// 示例:打开指定路径的文件
let filePath = "_doc/test.pdf"; // 文件路径(相对或绝对路径)
plus.runtime.openFile(filePath, {
  success: () => {
    console.log("文件打开成功");
  },
  fail: (e) => {
    console.log("打开失败:" + JSON.stringify(e));
  }
});

关键说明

  • 路径格式
    • 相对路径(如 "_doc/example.pdf")指向应用私有目录。
    • 绝对路径需通过 plus.io.convertLocalFileSystemURL() 转换(如转换 file:// 路径)。
  • 文件支持:依赖系统已安装的应用(如 PDF 需设备有 PDF 阅读器)。
  • 平台差异:Android 和 iOS 均支持,但行为可能因系统或应用差异而不同。

完整示例(选择并打开文件)

// 通过文件选择器获取文件
plus.io.requestFileSystem(plus.io.PRIVATE_DOC, (fs) => {
  fs.root.getFile("test.pdf", {}, (fileEntry) => {
    fileEntry.file((file) => {
      let filePath = fileEntry.toLocalURL(); // 转换为本地路径
      plus.runtime.openFile(filePath, {
        success: () => console.log("打开成功"),
        fail: (e) => console.log("失败:" + JSON.stringify(e))
      });
    });
  });
});

注意事项

  • 权限:Android 可能需要存储权限(在 manifest.json 中配置)。
  • 路径错误:无效路径会导致失败,建议先检查文件是否存在。
  • 回调处理:始终处理 successfail 回调以捕获异常。

通过以上步骤,即可在 UniApp 中调用 plus.runtime.openFile 实现文件打开功能。

回到顶部