Как getDownloadURL в функции Firebase - PullRequest
0 голосов
/ 04 ноября 2019

При использовании Firebase Storage для хранения изображений существует URL-адрес изображения, который выглядит следующим образом: https://firebasestorage.googleapis.com/v0/b/[MY-APP].appspot.com/o/[FILE-NAME]?alt=media&token=[TOKEN]

Я хочу получить этот URL-адрес.

Согласно это , , это , и , это и , это , мне нужно использовать метод .getDownloadURL(), который указан в "ref хранилища" .. но документация доступных объектов не соответствует реальному объекту.

И когда я пытаюсь получить доступ к методу .getDownloadURL() на объектах, предложенных в документации, приведенной в приведенном ниже коде, я получаю различные ошибки свойства not found.

        const admin = require('firebase-admin');
        admin.initializeApp();

        admin
        .storage()
        .bucket()
        .upload(imageToBeUploaded.filepath, {
            destination: storageFolder,
            resumable: false,
            metadata: {
                metadata: {
                contentType: imageToBeUploaded.mimetype
                }
        }
        })
        .then((taskSnapshot) => {
            // HOW DO I GET THE DOWNLOADABLE URL 
        })

Я пробовалследующие:

taskSnapshot[1].getDownloadURL(),

admin.storage().ref(storageFolder+'/'+imageFileName).getDownloadURL(),

admin.storageRef(storageFolder+'/'+imageFileName).getDownloadURL(),

admin.storage().ref().child(storageFolder+'/'+imageFileName).getDownloadURL(),

.. и многие другие.

Метод проб и ошибок не находит «storageRef», который имеет этот метод,

Как я могу получить загружаемый URL для моего изображения?

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Firebase Admin SDK упаковывает SDK Google Cloud Storage, поэтому их API-интерфейсы совпадают. Облачное хранилище SDK не предлагает URL-адреса для загрузки, которые в точности совпадают с теми, которые предоставляются мобильными и веб-SDK.

Вместо этого вы можете создать подписанный URL-адрес , который функциональноаналогично.

См. также: Получить URL-адрес загрузки из файла, загруженного с помощью облачных функций для Firebase

0 голосов
/ 04 ноября 2019

Решение, которое я использовал, заключается в том, чтобы сначала изменить правила доступа для моего хранилища, например:

https://console.firebase.google.com/u/0/project/[MY_APP]/storage[MY_APP].appspot.com/rules

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read;
      allow write: if request.auth != null;
    }
  }
}

, что означает, что токен не требуется дляURL, чтобы иметь возможность просматривать изображение.

И тогда я только что жестко запрограммировал URL:

            .then((taskSnapshot) => {
                const imageUrl = `https://firebasestorage.googleapis.com/v0/b/` +
                                 `${MY_APP_ID}.appspot.com/o/${imageFileName}?alt=media`;
                return imageUrl;
            })
...