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文件权限策略变更导致的。以下是关键原因和解决方案:

  1. Android 11作用域存储限制
    Android 11强制执行分区存储(Scoped Storage),应用默认无法通过绝对路径直接访问非沙箱目录下的文件(如DCIM、Pictures)。若使用plus.io接口获取的路径为file://开头,可能因权限不足而报错。

  2. 临时文件路径处理方案

    • 使用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/目录),再对沙箱内文件进行压缩。
  3. 路径转换方法
    如果原始路径为系统相册路径(如file:///storage/emulated/0/DCIM/...),需通过以下方式转换:

    // 将系统路径转换为可访问的本地URL
    plus.io.resolveLocalFileSystemURL(originalPath, (entry) => {
      plus.zip.compressImage({
        src: entry.toLocalURL(),
        dst: '_doc/compressed.jpg'
      });
    }, (e) => console.error('路径解析失败'));
    
  4. 清单文件配置检查
    确保manifest.json中已添加Android存储权限:

    "permissions": [
      "android.permission.READ_EXTERNAL_STORAGE",
      "android.permission.WRITE_EXTERNAL_STORAGE"
    ]
回到顶部