uni-app Android11 OnePlus 8T 小米11手机拍照 使用plus.zip.compressImage压缩图片时 error报错文件不存在
uni-app Android11 OnePlus 8T 小米11手机拍照 使用plus.zip.compressImage压缩图片时 error报错文件不存在
2 回复
怎么样了,同问
更多关于uni-app Android11 OnePlus 8T 小米11手机拍照 使用plus.zip.compressImage压缩图片时 error报错文件不存在的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在Android 11设备上出现plus.zip.compressImage压缩图片报错“文件不存在”,通常是由于Android 11文件权限策略变更导致的。以下是关键原因和解决方案:
-
Android 11作用域存储限制
Android 11强制执行分区存储(Scoped Storage),应用默认无法通过绝对路径直接访问非沙箱目录下的文件(如DCIM、Pictures)。若使用plus.io接口获取的路径为file://开头,可能因权限不足而报错。 -
临时文件路径处理方案
- 使用
uni.chooseImage选择图片后,获取的临时路径可直接用于压缩:uni.chooseImage({ success: (res) => { const tempPath = res.tempFilePaths[0]; // 此路径无需转换 plus.zip.compressImage({ src: tempPath, dst: '_doc/compressed.jpg', success: () => console.log('压缩成功') }); } }); - 若需持久化存储,应使用
uni.saveFile保存到应用沙箱路径(如_doc/目录),再对沙箱内文件进行压缩。
- 使用
-
路径转换方法
如果原始路径为系统相册路径(如file:///storage/emulated/0/DCIM/...),需通过以下方式转换:// 将系统路径转换为可访问的本地URL plus.io.resolveLocalFileSystemURL(originalPath, (entry) => { plus.zip.compressImage({ src: entry.toLocalURL(), dst: '_doc/compressed.jpg' }); }, (e) => console.error('路径解析失败')); -
清单文件配置检查
确保manifest.json中已添加Android存储权限:"permissions": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE" ]

