Правильный способ ссылки на изображения в документе Firestore - PullRequest
0 голосов
/ 16 февраля 2020

В моем приложении мои пользовательские документы имеют ассоциированное с ними изображение аватара, которое хранится в облачном хранилище. В настоящее время у меня есть поле в пользовательском объекте, которое ссылается на URL загрузки его изображения. Просто интересно, если это правильный / лучший способ сделать это.

1 Ответ

2 голосов
/ 16 февраля 2020

На самом деле не лучший способ материализовать связь между изображением аватара, которое вы храните в облачном хранилище, и конкретным c пользователем вашего проекта Firebase.

Вы может очень хорошо поступить так, как вы делаете (имея «поле в пользовательском объекте, которое ссылается на URL-адрес загрузки»).


Другим подходом будет сохранение изображений аватара в публикации c «папка» в вашем ведре по умолчанию, используя UID пользователя для имени аватара (см. Примечание «папки») внизу.

Затем вы можете использовать ссылку со следующим структура для прямой загрузки изображения (или включения его в тег img src HTML)

https://firebasestorage.googleapis.com/v0/b/<yourprojectname>.appspot.com/o/users%2F38r174prM9aTx4JAdcm50r3V0Hq2.png?alt=media

, где users - это имя "папки", предназначенной для публикации c аватара изображений

и 38r174prM9aTx4JAdcm50r3V0Hq2.png - это имя файла изображения для указанного пользователя c (т. Е. Пользовательский UId + png расширение).

Обратите внимание, что / кодируется как %2F (стандартная кодировка URL).

Затем вы должны установить свой облачный хранилище Правила Rity, например, следующие:

service firebase.storage {
 match /b/{bucket}/o {

    match /privateFiles {   //All other files that are not under users
     match /{allprivateFiles=**} {
       allow read: if false;
       allow write: .....
     }
   }

   match /users/{userId} {   //Public "folder"
     allow read;
   }
 }
}

Примечание: На самом деле Google Cloud Storage не имеет настоящих «папок», но с использованием символа «/» в файле путь будет вести себя аналогично папкам. В частности, консоль Firebase будет отображать файлы, организованные в папки.

...