uni-app 【报Bug】plus.io.convertLocalFileSystemURL打包后读取的目录无法载入到img中
uni-app 【报Bug】plus.io.convertLocalFileSystemURL打包后读取的目录无法载入到img中
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| PC | WIN7 64位 | - |
| 手机 | iOS 12.4 | - |
| 手机厂商 | 苹果 | - |
| 手机机型 | 6 | - |
| 打包方式 | 云端 | - |
产品分类:HTML5+
操作步骤:
qidong.src= plus.io.convertLocalFileSystemURL("_doc/images/ded8d01a343ad11fd10d6933013a045c.jpg");
预期结果:
file:///var/mobile/Containers/Data/Application/8201AC7B-0F40-4043-80CD-5C162C107DDD/Documents/Pandora/apps/HBuilder/doc/images/ded8d01a343ad11fd10d6933013a045c.jpg
实际结果:
file:///var/mobile/Containers/Data/Application/4B8B3F5D-2751-4037-923D-76C10145062D/Library/Pandora/apps/bigshengzhou/doc/images/ded8d01a343ad11fd10d6933013a045c.jpg
bug描述:
qidong.src= plus.io.convertLocalFileSystemURL("_doc/images/ded8d01a343ad11fd10d6933013a045c.jpg");
标准运行基座返回值:
file:///var/mobile/Containers/Data/Application/8201AC7B-0F40-4043-80CD-5C162C107DDD/Documents/Pandora/apps/HBuilder/doc/images/ded8d01a343ad11fd10d6933013a045c.jpg
自定义调试基座返回值:
file:///var/mobile/Containers/Data/Application/AACD1215-2988-4F67-849E-DD2B35ABFD3A/Documents/Pandora/apps/bigshengzhou/doc/images/ded8d01a343ad11fd10d6933013a045c.jpg
打包后返回值:
file:///var/mobile/Containers/Data/Application/4B8B3F5D-2751-4037-923D-76C10145062D/Library/Pandora/apps/bigshengzhou/doc/images/ded8d01a343ad11fd10d6933013a045c.jpg
var temp_img = new Image();
temp_img.src = qidong.src ;
temp_img.onerror = function(){
console.log("错误");
}
此处载入失败,但以下代码能找到
plus.io.resolveLocalFileSystemURL(qidong.src,function(entry){
alert("找到");
},function(e){
alert("没有");
});
更多关于uni-app 【报Bug】plus.io.convertLocalFileSystemURL打包后读取的目录无法载入到img中的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 【报Bug】plus.io.convertLocalFileSystemURL打包后读取的目录无法载入到img中的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个典型的路径转换问题。plus.io.convertLocalFileSystemURL 在不同运行环境下返回的路径确实会有差异,这属于正常现象。
关键问题在于:打包后的路径指向了 Library 目录而非 Documents 目录。iOS 的沙盒机制中,Library 目录下的文件默认无法通过 file:// 协议直接访问,特别是用于 img 标签的 src 属性时。
解决方案:
-
使用相对路径或 base64: 对于图片资源,建议将文件读取为 base64 格式:
plus.io.resolveLocalFileSystemURL("_doc/images/ded8d01a343ad11fd10d6933013a045c.jpg", function(entry){ entry.file(function(file){ var reader = new plus.io.FileReader(); reader.readAsDataURL(file); reader.onloadend = function(e){ qidong.src = e.target.result; // 直接使用base64数据 } }); }); -
使用 uni-app 封装的方法: 如果使用 uni-app 框架,推荐使用统一的 API:
// 使用uni.getFileSystemManager() const fs = uni.getFileSystemManager(); fs.readFile({ filePath: '_doc/images/ded8d01a343ad11fd10d6933013a045c.jpg', encoding: 'base64', success: (res) => { qidong.src = 'data:image/jpeg;base64,' + res.data; } });

