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、图片、文档等)。以下是使用方法和注意事项:
基本用法
- 获取文件路径:首先确保文件路径有效(如从
plus.io接口或文件选择器获取)。 - 调用
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 中配置)。
- 路径错误:无效路径会导致失败,建议先检查文件是否存在。
- 回调处理:始终处理
success和fail回调以捕获异常。
通过以上步骤,即可在 UniApp 中调用 plus.runtime.openFile 实现文件打开功能。

