Получение URL-адреса загрузки изображения в Firebase Storage с помощью `ref ()` - PullRequest
0 голосов
/ 17 января 2020

Я загружаю некоторые изображения в Firebase Storage, используя Javascript API. Полученный объект выглядит следующим образом:

{
  bucket: 'my-bucket',
  contentType: 'image/jpeg',
  ...
  id: 'my-bucket/path/to/image.jpeg',
  mediaLink: "https://www.googleapis.com/download/storage/v1/b/my-bucket/o/path%2Fto%2Fimage.jpeg?generation=123456789&alt=media",
  name: 'path/to/image.jpeg',
  selfLink: 'https://www.googleapis.com/storage/v1/b/my-bucket/o/path%2Fto%2Fimage.jpeg',
  ...
}

Как видите, я получаю id, name и две ссылки, которые как-то связаны между собой. Некоторые из них имеют закодированный путь, некоторые относительные, некоторые абсолютные.

Теперь я хочу загрузить его, используя Javascript API, с вошедшим в систему пользователем. Это прекрасно работает:

let urlPromise = firebase.storage()
    .refFromURL("gs://my-bucket/path/to/image.jpeg")
    .getDownloadUrl();

Однако я не могу заставить его работать с ref() API:

let urlPromise = firebase.storage()
    .ref("path/to/image.jpeg")
    .getDownloadUrl();

Вместо path/to/image.jpeg (name), я также пробовал id, mediaLink и selfLink, но я всегда получаю FirebaseStorageError (404).

Какой именно параметр ожидается в методе .ref()?

документы также не указаны c.

Редактировать: Вот фактический скриншот того, как файл появляется в консоли Firebase:

enter image description here

Если я передам свойство Name (1997_Ford_Falcon_(EL)_GLi_sedan_(17670566466).jpg_320px-1997_Ford_Falcon_(EL.jpg) ref(), я получу 404. Если я использую путь gs://my-bucket/..., он говорит, что ref() не может получить URL.

Редактировать 2: Я проверил точные URL, которые генерируются двумя методами. Это URL, который я получаю от ref():

https://firebasestorage.googleapis.com/v0/b/my-bucket.appspot.com/
o/upload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F0%2F00%2F1997_Ford_Falcon_(EL)_GLi_
sedan_(17670566466).jpg_320px-1997_Ford_Falcon_(EL.jpg

Это рабочий URL от refFromURL():

https://firebasestorage.googleapis.com/v0/b/my-bucket/
o/upload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F0%2F00%2F1997_Ford_Falcon_(EL)_GLi_
sedan_(17670566466).jpg_320px-1997_Ford_Falcon_(EL.jpg

Как видите, метод ref() добавляет .appspot.com к названию ведра. Это, кажется, вызывает проблему.

1 Ответ

0 голосов
/ 21 января 2020

Вы не передаете полный путь к файлу. То, что вы передаете прямо сейчас:

1997_Ford_Falcon_ (EL) _GLi_sedan_ (17670566466) .jpg_320px-1997_Ford_Falcon_ (EL.jpg

Отсутствует префикс пути, где он находится, что вы можете видеть на скриншоте:

upload.wikimedia.org / wikipedia / 1997_Ford_Falcon_ (EL) _GLi_sedan_ (17670566466) .jpg_320px-1997_Ford_Falcon_ (EL.jpg

Не передавайте "gs" или имя корзины: это просто путь к объекту в корзине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...