Vue 显示来自 firebase 云存储 blob 的图像

Posted

技术标签:

【中文标题】Vue 显示来自 firebase 云存储 blob 的图像【英文标题】:Vue display an image from firebase cloud storage blob 【发布时间】:2022-01-19 05:43:27 【问题描述】:

我正在构建产品查找存储库,用户将扫描产品条形码,然后返回产品数据和要显示的产品图片。

现在出于测试目的,我设置了一个 Firebase 存储桶,并上传了一张图片。我已经成功地通过调用 firebase 存储 api 来检索图像,但我似乎无法在我的 Vue 应用程序中显示它。我似乎无法在 firebase 文档上找到合适的文档,因为他们的示例使用纯 js 和 html

显示图片的代码:

<template>
  <div class="container">
    <div class="row">
      <div class="col">
        <image v-if="image!==null" :src="image"></image>
      </div>
    </div>
  </div>
</template>

页面挂载时运行的脚本,它将从存储桶中获取图像并显示。

<script>
import firebase from "firebase";
export default 
  name: "ProductPage",
  data: () => 
    return 
      image: null
    ;
  ,
  mounted() 
    firebase
      .storage()
      .ref("test/1234-1.jpg")
      .getDownloadURL()
      .then(url => 
        const xhr = new XMLHttpRequest();
        xhr.responseType = "blob";
        xhr.onload = event => 
          this.image = xhr.response;
          event.preventDefault();
        ;
        xhr.open("GET", url);
        xhr.send();
      )
      .catch(error => 
        // Handle any errors
        console.log(error);
      );
  
;
</script>

我知道 api 调用有效,因为当我在 chrome 中检查开发人员控制台时,我可以在网络选项卡中的 api 调用上看到预览图像。我似乎无法在 vue 中显示它。

它将图像存储为 blob?

我已按要求添加了回复:

【问题讨论】:

你能从你的开发控制台添加响应吗? 它是一个blob,响应选项卡没有任何内容,但预览选项卡显示图像。 【参考方案1】:

问题可能在于 Vue 显示 Blob。试试:

xhr.onload = event => 
  this.image = URL.createObjectURL(xhr.response);
  event.preventDefault();
;

这里的URL.createObjectURL 应该创建对 Blob 的引用。

【讨论】:

以上是关于Vue 显示来自 firebase 云存储 blob 的图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在来自 Firebase 存储的片段 ImageView 中显示图像

来自firebase存储URL的toDataURL显示空白图像[重复]

显示来自 Firebase 存储的图像时出现 404 错误

IONIC - 如何显示来自firebase存储的图像而无需下载它[关闭]

如何在我的应用程序上显示来自 Firebase 存储的图像?

iOS 未收到来自 Firebase 云消息传递的通知