uni-app plus.io.conventLocalFileSystemURL("_download")方法正式打包后返回的地址无法访问文件
uni-app plus.io.conventLocalFileSystemURL("_download")方法正式打包后返回的地址无法访问文件
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | windows11 | HBuilderX |
示例代码:
```params.saveDir = plus.io.convertLocalFileSystemURL("_download")
操作步骤: 调用plus.io.convertLocalFileSystemURL("_download") 使用自定义基座调试和正式打包
预期结果:
自定义基座调试
/storage/emulated/0/Android/data/com.bjyos.xunyingji/apps/UNI6DDAA76/www/_download/1762250549816
返回的照片路径可以正常显示
实际结果:
正式打包
/data/user/0/com.bjyos.xunyingji/files/apps/UNI6DDAA76/www/_download/1762250549816
返回的照片路径无法显示
bug描述:
plus.io.conventLocalFileSystemURL("_download") // 文件保存目录
这个接口自定义基座调试和云打包获取的数据不一样
自定义基座调试 根据返回的地址 可以正常读取到图片
正式打包后 根据返回的地址 无法读取到图片
更多关于uni-app plus.io.conventLocalFileSystemURL("_download")方法正式打包后返回的地址无法访问文件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
hello,你提到的读取图片部分的代码是什么呢?
更多关于uni-app plus.io.conventLocalFileSystemURL("_download")方法正式打包后返回的地址无法访问文件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我购买的插件 作者说调用plus.io.convertLocalFileSystemURL("_download")方法 在基座调试是正常的 但正式打包返回的数据是有问题的
回复 q***@126.com: 具体的报错是什么呢?
没有报错 就是返回的文件路径 读取不到文件
回复 DCloud_UNI_yuhe: 基座调试可以正常读取到文件 正式打包后就读取不到了
回复 q***@126.com: 读取不到文件也是有报错信息的吧,要不然你是怎么确定读取不到文件呢?
回复 DCloud_UNI_yuhe: 我们把照片直接显示在列表里 基座调试的时候 照片显示能正常显示 正式打包后 选择照片后 列表显示都是空白的
回复 q***@126.com: 什么列表里?直接调用 chooseImage 也会出现问题吗?
这是一个典型的路径访问权限问题。在Android平台上,不同打包方式会导致应用数据存储路径的差异:
自定义基座调试时,应用运行在/storage/emulated/0/Android/data/目录下,这是外部存储空间,具有较宽松的文件访问权限。
正式打包后,应用运行在/data/user/0/目录下,这是应用的私有数据目录,其他应用无法直接访问其中的文件,导致返回的路径无法被外部直接读取。
解决方案:
- 使用File API读取文件:
plus.io.resolveLocalFileSystemURL("_download/1762250549816", function(entry) {
entry.file(function(file) {
var fileReader = new plus.io.FileReader();
fileReader.readAsDataURL(file);
fileReader.onloadend = function(evt) {
var base64Data = evt.target.result;
// 使用base64Data显示图片
};
});
});
- 将文件保存到相册或公共目录:
// 保存到相册
plus.gallery.save("_download/1762250549816");
// 或保存到公共下载目录
plus.io.requestFileSystem(plus.io.PUBLIC_DOWNLOADS, function(fs) {
fs.root.getFile("filename", {create: true}, function(fileEntry) {
// 复制文件到公共目录
});
});
- 使用uni.downloadFile管理下载文件:
uni.downloadFile({
url: 'your_file_url',
success: (res) => {
if (res.statusCode === 200) {
// res.tempFilePath 可直接使用
}
}
});

