uni-app 【报Bug】plus.io.resolveLocalFileSystemURL 方法在APP首次启动时无法读取绝对路径和相对路径的视频和图片 重新启动APP后能正常读取
uni-app 【报Bug】plus.io.resolveLocalFileSystemURL 方法在APP首次启动时无法读取绝对路径和相对路径的视频和图片 重新启动APP后能正常读取
示例代码:
const data = await new Promise((r,j)=>{
plus.io.resolveLocalFileSystemURL(url,function(entry){
entry.file(function(file){
const reader = new plus.io.FileReader()
reader.readAsDataURL(file)
reader.onloadend = (e)=>{
let s = e.target.result
s = s.replace(/^data:[^;]+;base64,/, '')
s = uni.base64ToArrayBuffer(s)
r(s)
}
reader.onerror = (e)=>{
j(e)
}
})
},function(e){
plus.nativeUI.toast(e.message)
j(e)
})
})
操作步骤:
任意页面选择图片或视频,通过plus.io.resolveLocalFileSystemURL进行读取文件,将URL编码转成arraybuffer对象,只有APP第一次启动才会出现无响应,第二次之后进入APP,就能正常读取文件转arraybuffer
预期结果:
plus.io.resolveLocalFileSystemURL正常读取文件
实际结果:
plus.io.resolveLocalFileSystemURL第一次无任何响应
bug描述:
APP第一次启动时,使用uni.chooseImage和uni.chooseVideo选择图片或视频,无论图片或视频是否压缩(chooseImage:sizeType: [‘original’,‘compressed’]、chooseVideo:compressed: true),获取的上传路径,通过plus.io.resolveLocalFileSystemURL( url, succesCB, errorCB )都无响应,无成功回调,无报错提示
更多关于uni-app 【报Bug】plus.io.resolveLocalFileSystemURL 方法在APP首次启动时无法读取绝对路径和相对路径的视频和图片 重新启动APP后能正常读取的实战教程也可以访问 https://www.itying.com/category-93-b0.html
@DCloud_HB_WJ @DCloud_UNI_WJX @DCloud_UNI_HRK @DCloud_UNI_OttoJi @DCloud_HB_GY @DCloud_HB_Gml @DCloud_Android_YJC @DCloud_Android_DQQ @DCloud_Android_THB @DCloud_Android_zl
更多关于uni-app 【报Bug】plus.io.resolveLocalFileSystemURL 方法在APP首次启动时无法读取绝对路径和相对路径的视频和图片 重新启动APP后能正常读取的实战教程也可以访问 https://www.itying.com/category-93-b0.html
遇到同样的问题了,请问解决了吗?
在使用 uni-app 开发时,plus.io.resolveLocalFileSystemURL 方法在首次启动时无法读取绝对路径和相对路径的视频和图片,但在重新启动 APP 后能正常读取,这可能是由于以下原因导致的:
可能的原因
- 文件系统未完全初始化:在 APP 首次启动时,文件系统可能还未完全初始化,导致无法正确解析文件路径。
- 权限问题:首次启动时,某些权限可能还未被正确获取或初始化,导致文件读取失败。
- 缓存问题:首次启动时,文件路径的缓存可能还未生成,导致无法正确解析路径。
- 异步加载问题:某些资源可能在首次启动时还未完全加载完成,导致文件读取失败。
解决方案
-
延迟执行:在首次启动时,可以尝试延迟执行
resolveLocalFileSystemURL方法,确保文件系统已经初始化完成。setTimeout(() => { plus.io.resolveLocalFileSystemURL(path, function(entry) { // 处理文件 }, function(error) { console.error("文件读取失败: " + error.message); }); }, 1000); // 延迟1秒执行 -
检查权限:确保在首次启动时,所有必要的权限已经被正确获取。可以使用
plus.android.requestPermissions来请求权限。plus.android.requestPermissions(["android.permission.READ_EXTERNAL_STORAGE"], function(result) { if (result.denied.length > 0) { console.error("权限被拒绝"); } else { // 权限已获取,继续执行文件读取操作 } }); -
使用绝对路径:确保在首次启动时,使用的是绝对路径而不是相对路径。相对路径可能在首次启动时无法正确解析。
var absolutePath = plus.io.convertLocalFileSystemURL("relative/path/to/file"); plus.io.resolveLocalFileSystemURL(absolutePath, function(entry) { // 处理文件 }, function(error) { console.error("文件读取失败: " + error.message); }); -
检查文件是否存在:在首次启动时,可以先检查文件是否存在,确保文件路径正确。
plus.io.resolveLocalFileSystemURL(path, function(entry) { if (entry.isFile) { // 文件存在,继续处理 } else { console.error("文件不存在"); } }, function(error) { console.error("文件读取失败: " + error.message); });

