uniapp plus.camera.captureImage返回时生成0kb文件的问题如何解决?

我在使用uniapp的plus.camera.captureImage拍照时遇到了问题:调用方法后虽然返回了文件路径,但生成的图片文件大小为0kb,无法正常使用。请问这是什么原因导致的?该如何解决这个问题?已经确认过摄像头权限是开启的,存储权限也正常。

2 回复

检查存储权限是否开启,确保路径正确。尝试使用绝对路径,如_www/开头。若仍无效,改用plus.gallery.pick选择图片测试。重启应用或设备也可能解决。


在UniApp中,plus.camera.captureImage返回0KB文件通常是由于权限、路径或回调处理不当导致的。以下是常见解决方案:

  1. 检查存储权限
    确保应用已获取读写外部存储的权限(Android)。在manifest.json中添加:

    "permissions": {
      "UniPermission": {
        "request": ["android.permission.CAMERA", "android.permission.WRITE_EXTERNAL_STORAGE"]
      }
    }
    
  2. 指定有效文件路径
    使用绝对路径,避免临时目录被系统清理:

    plus.camera.captureImage(function(path) {
      let filePath = path // 捕获的路径可能为临时路径
      // 可选:将文件移动到永久目录
      plus.io.resolveLocalFileSystemURL(path, function(entry) {
        entry.copyTo(plus.io.PRIVATE_DOC, 'image.jpg', ...);
      });
    }, function(error) {
      console.error('捕获失败:' + error.message);
    }, {
      filename: '_doc/camera/' // 指定自定义目录(如_doc为应用私有目录)
    });
    
  3. 正确处理回调
    确保在成功回调中检查文件有效性:

    plus.camera.captureImage(function(path) {
      plus.io.resolveLocalFileSystemURL(path, function(entry) {
        entry.file(function(file) {
          if (file.size === 0) {
            console.log("文件大小为0,可能保存失败");
            // 可尝试重新捕获或检查存储空间
          }
        });
      });
    });
    
  4. 其他注意事项

    • 确认设备存储空间充足。
    • 测试真机环境(部分模拟器可能不支持)。
    • 检查相机硬件是否正常。

若问题持续,尝试使用plus.gallery.pick替代或更新HBuilderX到最新版本。

回到顶部