uni-app 打包后APP内使用 uni.openDocument 打开文件失败 plus.runtime.openFile 也失败

uni-app 打包后APP内使用 uni.openDocument 打开文件失败 plus.runtime.openFile 也失败

8 回复

大神快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.openDocumentplus.runtime.openFile打开文件失败通常由以下几个原因导致:

  1. 文件路径问题
    确保文件路径正确且文件存在。在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)
          });
        }
      }
    });
    
  2. 文件格式不支持
    uni.openDocument支持的文件类型有限(如PDF、Word、Excel等),需确认设备上已安装能打开该格式的应用。可通过plus.runtime.openFile调用系统应用打开,但同样受系统支持限制。

  3. 权限问题
    在Android平台,需在manifest.json中配置文件访问权限:

    "permissions": {
      "UniNView": {
        "request": ["READ_EXTERNAL_STORAGE", "WRITE_EXTERNAL_STORAGE"]
      }
    }
    
  4. 路径协议错误
    使用plus.io.convertLocalFileSystemURL()将本地路径转换为系统可识别的URL:

    const fileURL = plus.io.convertLocalFileSystemURL(filePath);
    plus.runtime.openFile(fileURL, {}, () => {
      console.log('打开成功');
    });
回到顶部