uni-app h5 chooseimage功能在OPPO手机web环境下不能使用
uni-app h5 chooseimage功能在OPPO手机web环境下不能使用
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | macos12.0.1 | HBuilderX |
操作步骤:
uni.chooseImage({ count: 1, sourceType: [‘album’], sizeType: [‘compressed’], success: function(res) { //赋值给image标签 }, fail:function(err){ } });
## 预期结果:
image标签正确显示图片
实际结果:
失败
## bug描述:
chooseimage功能可以获取选择图片地址,但是赋值给image后,无法展示
更多关于uni-app h5 chooseimage功能在OPPO手机web环境下不能使用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
chooseImage 返回的地址是什么?
更多关于uni-app h5 chooseimage功能在OPPO手机web环境下不能使用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
返回的地址是正常的 这样"blob:http://localhost:8080/df5a48ec-e5c7-4d67-8ad2-484c1efb6836"
而且其他品牌手机例如 小米、vivo、华为、iPhone测试正常,但是OPPO A9X、一加、三星测试无法显示正确图片。
在OPPO手机Web环境下,uni.chooseImage返回的临时路径可能无法直接用于<image>标签显示,这是常见兼容性问题。原因如下:
-
临时路径格式差异:某些安卓WebView返回的路径为
content://或file://协议,而非标准URL格式,导致图片无法加载。 -
权限限制:部分机型Web环境对本地文件访问有安全限制,直接使用返回的路径可能被拦截。
解决方案:
- 转换为Base64:在
success回调中,通过uni.getFileSystemManager().readFile将图片转为Base64格式:success: function(res) { const tempPath = res.tempFilePaths[0]; uni.getFileSystemManager().readFile({ filePath: tempPath, encoding: 'base64', success: (result) => { const base64 = 'data:image/jpeg;base64,' + result.data; // 将base64赋值给image的src } }); }

