uni-app 打包后APP内使用 uni.openDocument 打开文件失败 plus.runtime.openFile 也失败
uni-app 打包后APP内使用 uni.openDocument 打开文件失败 plus.runtime.openFile 也失败
大神快9我 周五要发新版 [大汗]
更多关于uni-app 打包后APP内使用 uni.openDocument 打开文件失败 plus.runtime.openFile 也失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
怎么样了
别沉! 快看看
初步猜测也可能是跟文件名字有关系,它的文件名字中含有 # 号, 一般的好像不认这个。 一会自测一下 如果是因为名字太长或者特殊字符 , 那这个要怎么解决呢 ? encodeURIComponent ?
我length了一下 它上传的文件名字长度普遍在 80左右。。。
排查完毕, 来反馈一下。
原因是因为上传文件名称中包含了 c:\users\xxx 这种, 在数据库改掉名字以后可以正常预览
最后问一句 自我排查完的问题 我想关掉 怎么关呢 ?
在uni-app中,uni.openDocument和plus.runtime.openFile打开文件失败通常由以下几个原因导致:
-
文件路径问题
确保文件路径正确且文件存在。在APP中,文件路径通常需要使用_www、_doc等本地路径前缀,或从网络下载后保存到本地再打开。
示例:// 正确示例:使用_doc路径 const filePath = '_doc/test.pdf'; uni.downloadFile({ url: 'https://example.com/test.pdf', success: (res) => { if (res.statusCode === 200) { uni.openDocument({ filePath: res.tempFilePath, success: () => console.log('打开成功'), fail: (err) => console.log('打开失败', err) }); } } }); -
文件格式不支持
uni.openDocument支持的文件类型有限(如PDF、Word、Excel等),需确认设备上已安装能打开该格式的应用。可通过plus.runtime.openFile调用系统应用打开,但同样受系统支持限制。 -
权限问题
在Android平台,需在manifest.json中配置文件访问权限:"permissions": { "UniNView": { "request": ["READ_EXTERNAL_STORAGE", "WRITE_EXTERNAL_STORAGE"] } } -
路径协议错误
使用plus.io.convertLocalFileSystemURL()将本地路径转换为系统可识别的URL:const fileURL = plus.io.convertLocalFileSystemURL(filePath); plus.runtime.openFile(fileURL, {}, () => { console.log('打开成功'); });

