9***@qq.com
9***@qq.com
  • 发布:2025-12-12 16:10
  • 更新:2025-12-12 16:20
  • 阅读:53

根据插件返回的绝对路径去获取文件信息

分类:uni-app

现在是通过插件拿到了文件的绝对路径:/storage/emulated/0/Download/中海安全日志助手(阳光科创中心店)_录音纪要-7.docx,想尝试通过plus.io.convertLocalFileSystemURL转换,转换之后提示“不支持当前路径,改为应用运行路径”,是不是应该在插件内去执行复制文件的操作,将文件复制到应用的沙盒目录内再去获取?因为我根据分区存储,加上前缀去获取也是拿不到文件的,应该怎么去获取啊??我写了个测试页面,附件有测试的代码,

我尝试了pius.android,plus.io的各种操作尝试去复制,都拿不到文件流,uniapp能根据绝对路径去拿文件吗?

2025-12-12 16:10 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

是的,您需要在插件内或应用中将文件复制到沙盒目录后再操作。原因如下:

  1. 安卓分区存储限制:Android 10+ 引入 Scoped Storage,应用无法直接访问外部公共目录(如 /storage/emulated/0/Download/)。plus.io.convertLocalFileSystemURL 仅支持转换应用沙盒内路径(如 _documents/),外部路径会触发“不支持当前路径”错误。

  2. 正确做法

    • 使用 plus.io.resolveLocalFileSystemURL 获取源文件 Entry
    • 调用 copyTo 方法复制到沙盒目录(如 _documents/
    • 再用 convertLocalFileSystemURL 转换新路径
plus.io.resolveLocalFileSystemURL(  
  '/storage/emulated/0/Download/中海安全日志助手(阳光科创中心店)_录音纪要-7.docx',  
  (sourceEntry) => {  
    plus.io.resolveLocalFileSystemURL('_documents/', (targetDir) => {  
      sourceEntry.copyTo(targetDir, '录音纪要-7.docx', (newFile) => {  
        const sandBoxPath = plus.io.convertLocalFileSystemURL(newFile.nativePath);  
        // 此处 sandBoxPath 可安全使用  
      });  
    });  
  }  
);
  1. 注意事项
    • 需在 manifest.json 添加 android.permission.WRITE_EXTERNAL_STORAGE 权限(仅限 targetSdkVersion < 30)
    • Android 11+ 建议通过 MediaStore API 访问公共目录(需额外处理)
    • 插件内操作更可靠,避免跨进程权限问题

参考文档:HTML5+ 文件系统规范安卓分区存储适配指南。建议优先使用沙盒目录操作文件,符合平台安全规范。

内容为 AI 生成,仅供参考
牛奶包子

牛奶包子

根据你的描述,这是一个关于在 UniApp 中处理 Android 文件路径的问题。对于非应用沙盒内的文件(如 /storage/emulated/0/Download/ 下的文件),plus.io.convertLocalFileSystemURL 确实无法直接转换,这是 Android 分区存储限制导致的。

建议的解决方案是:

在插件内先将文件复制到应用沙盒目录(如 _doc_downloads 等),然后再通过 plus.io.resolveLocalFileSystemURL 访问。

或者使用 plus.android.invoke 通过 Java API 直接访问文件内容,示例代码:

let file = new plus.android.invoke('/storage/emulated/0/Download/xxx', 'getAbsolutePath');  
let inputStream = plus.android.invoke(file, 'openInputStream');

如果 resolveLocalFileSystemURL 无反应,可能是路径格式不正确或未申请文件读写权限。请确保:
已配置 Android 权限
路径使用正确的沙盒目录前缀(如 file://

来源

内容为 AI 生成,仅供参考

要回复问题请先登录注册