web-dev-qa-db-ja.com

FirebaseストレージのgetDownloadURL()が有効なURLを返しません

getDownloadURL()メソッドを使用して、Firebaseストレージに保存されている画像のURLを取得しようとしました。

奇妙なことに、画像の代わりにオブジェクトであるURLを返します

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓例URL↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓ https://firebasestorage.googleapis.com/v0/b/example.appspot.com/o/images%2Fcat.png ↑↑↑↑ ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑例URL↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ↑↑↑↑↑↑↑↑

オンラインで調べたところ、画像を表示するための正しいURLは次のようになっているはずです...

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓例URL↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓ https://firebasestorage.googleapis.com/v0/b/example.appspot.com/o/images%2Fcat.png?alt=media&token=sometoken
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑サンプルURL↑↑↑↑↑↑↑↑↑↑↑↑↑ ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

しかし、getDownloadURL() ..を使用してURLを取得する方法がわかりません。

これが私のコードです...

var storage = firebase.storage();

$scope.getImgUrl = function(file) {
    storage.ref("images/" + file + ".png")
      .getDownloadURL()
      .then(function onSuccess(url) {
        return url;
      })
      .catch(function onError(err) {
        console.log("Error occured..." + err);
      })
  }

何か案が?

5

したがって、Firebaseから画像のURLを取得する正しい方法は次のとおりです。

_ $scope.getImgUrl = function(file) {
        storage.child("images/" + file +".png").getDownloadURL().then(function(url) {
          return url;
        }).catch(function(error) {
          // Handle any errors here
        });
 }
_

storage.child()の代わりにstorage.ref()を使用していることに注意してください

6
Sub 6 Resources

then()コールバックでの戻り値は、期待どおりには機能しません。 getDownloadUrl()を呼び出すと、promiseが返されます。そのpromiseをスコープにバインドするだけで、HTMLで使用できます。

$scope.getImgUrl = function(file) {
    return storage.ref("images/" + file + ".png").getDownloadURL();
}
5

私のためのこの仕事

firebase.storage().ref().child('Audios/file.wav').getDownloadURL().then(function(downloadURL) {
                        console.log('File available at', downloadURL);
 });
1
ZaKaria AmIne