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

3 回复

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>标签显示,这是常见兼容性问题。原因如下:

  1. 临时路径格式差异:某些安卓WebView返回的路径为content://file://协议,而非标准URL格式,导致图片无法加载。

  2. 权限限制:部分机型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
        }
      });
    }
回到顶部