【问题标题】:Firebase refFromURL is not a functionFirebase refFromURL 不是函数
【发布时间】:2018-03-28 22:05:54
【问题描述】:

我正在尝试在 HTML 表中使用 Javascript 从 Firebase 存储中获取一些图像,但我不断收到此错误:

storage.refFromURL is not a function

这很奇怪,考虑到来自here的信息

// 从 Google Cloud Storage URI 创建引用 var gsReference = storage.refFromURL('gs://bucket/images/stars.jpg')

javascript 代码也从 Firebase 数据库中获取数据,并且数据库中的每个子项都包含一个指向 Firebase 存储的 URL(在数据库中定义为 imageUrl),格式为 gs://xxxxxxx ,我想在表格中使用它。换句话说,我想从数据库中获取文本,从存储中获取图像,但我不断收到“不是函数”错误。我有以下代码:

index.js

var rootRef = firebase.database().ref().child("Test");
var storage = firebase.storage().ref();

rootRef.on("child_added", snap => {
  var headline = snap.child("headline").val();
  var url_ul = snap.child("imageUrl").val();

  var storageRef = storage.refFromURL('url_ul').getDownloadURL().then(function(url) {
    var test = url;
    alert(url);
    document.querySelector('img').src = test;
  }).catch(function(error) {});

  $("#table_body").append("</td><td>" + headline + "</td><td><img src='test' alt='' border=3 height=100 width=100></td>");
});

以及包含 Firebase 信息的 HTML 文件:

<!DOCTYPE html>
<html>

<head>
  <title>Firebase Web Basics</title>
  <link href="https://fonts.googleapis.com/css?family=Raleway:300,400,500,700" rel="stylesheet">
  <script src="https://use.fontawesome.com/939e9dd52c.js"></script>
</head>

<body>
  <div class="mainDiv" align="left">
    <h1>All users</h1>
    <table>
      <thead>
        <tr>
          <td>Headline</td>
          <td>Image</td>

        </tr>
      </thead>
      <tbody id="table_body">
      </tbody>
    </table>
  </div>

  <script src="https://www.gstatic.com/firebasejs/4.9.1/firebase.js"></script>
  <script>
    // Initialize Firebase
    var config = {
      apiKey: "AIxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      authDomain: "xxxxxxxxxxxx.firebaseapp.com",
      databaseURL: "https://xxxxxxxxxxxxx.firebaseio.com",
      projectId: "xxxxxxxxxxxxxxxx",
      storageBucket: "xxxxxxxxxxxxx.appspot.com",
      messagingSenderId: "0000000000000000"
    };
    firebase.initializeApp(config);
  </script>

  <script src="https://code.jquery.com/jquery-3.1.0.js"></script>
  <script src="index.js"></script>
  <script src="https://www.gstatic.com/firebasejs/4.12.0/firebase-database.js"></script>

</body>

</html>

【问题讨论】:

    标签: javascript firebase firebase-storage


    【解决方案1】:

    你基本上是这样做的:

    var storage = firebase.storage().ref();
    

    这会给你一个Reference

    然后你调用:

    storage.refFromURL('url_ul')
    

    但是refFromURL is only defined on the root Storage object.

    所以你会想要:

    var storage = firebase.storage();
    storage.refFromURL('url_ul')
    

    【讨论】:

    • 非常感谢!它确实在没有 ref() 的情况下工作!好的!但现在我在控制台中有这个:Firebase Storage: Invalid argument in 'refFromURL' at index 0: Expected full URL but got a child path, use ref instead. url_ul 读取 gs://xxxxx。我在表中尝试了该变量。知道是什么原因造成的吗?
    • 看起来您传递的是路径而不是完整的 URL。在这种情况下,您只需致电storage.ref(path)。请注意,如果没有看到您传入的实际 URL(我认为这不是字面上的 'url_ul'),就很难确定。
    • 是gs路径。他们在其中一个 db 组件中为 url_ul 键入的密钥包含以下内容:"gs://appname.appspot.com/seminte9.jpg"
    • 这是否提供了任何有用的信息?还是没搞清楚
    猜你喜欢
    • 2021-11-05
    • 2020-07-01
    • 2020-03-14
    • 2019-06-07
    • 2020-10-12
    • 2017-08-04
    • 1970-01-01
    • 2020-11-05
    相关资源
    最近更新 更多