图像未在 Firebase 存储中保存为 jpeg

Posted

技术标签:

【中文标题】图像未在 Firebase 存储中保存为 jpeg【英文标题】:Image not saved as jpeg in firebase storage 【发布时间】:2020-12-04 09:57:39 【问题描述】:

我目前正在从事一个使用 cordova 相机的离子项目。我可以拍摄图像,存储在离子存储中,也可以上传到 Firebase 存储。但是,图像不会保存为jpeg,而是保存为application/octet-stream

  takePicture() 
    const options: CameraOptions = 
      quality: 100,
      destinationType: this.camera.DestinationType.DATA_URL,
      encodingType: this.camera.EncodingType.JPEG,
      mediaType: this.camera.MediaType.PICTURE
    

    this.camera.getPicture(options).then((imageData) => 
      console.log(imageData)
      // Add new photo to gallery
      this.photos.unshift(
        data: 'data:image/jpeg;base64,' + imageData
      );

      // Save all photos for later viewing
      this.storage.set('photos', this.photos);
      //save to firebase storage
      const storageRef = firebase
        .storage()
        .ref('photos/img.jpeg')
      storageRef.putString(imageData, 'base64'), 
        contentType: 'image/jpeg'
      


    , (err) => 
      // Handle error
      console.log("Camera issue: " + err);
    );
  

【问题讨论】:

【参考方案1】:

根据 API 文档,putString() 采用三个参数:

参数

数据:字符串

要上传的字符串。

可选格式:StringFormat

要上传的字符串的格式。

可选元数据:UploadMetadata

新上传对象的元数据。

第三个参数是您指定内容类型的位置。现在,您正在传递两个参数,而内容类型不是其中的一部分。看起来你的右括号放错了地方:

storageRef.putString(imageData, 'base64', 
    contentType: 'image/jpeg'
);

【讨论】:

谢谢,Doug,正如你所提到的,错误是由于右括号造成的。由于三个参数中的两个是可选的,因此我能够摆脱我的两个参数。

以上是关于图像未在 Firebase 存储中保存为 jpeg的主要内容,如果未能解决你的问题,请参考以下文章

使用 getData() 从 Firebase 存储下载 jpeg 图像时出现错误 13010“对象不存在”

怎么用ABBYY将PDF转换为JPEG图像

将图像链接从 Firebase 存储存储到 Firebase 数据库时出错

在颤动中将图像从图像选择器保存到firebase存储

如何在单个事务中将图像上传到 Firebase 存储并在数据库中保存参考?

使用 firebase 功能将图像上传到云存储错误