Зберігання Firebase Як зберігати та отримувати зображення [закрито]


268

Як зберігати та переглядати зображення на firebase?


1
Це здорово, якщо я зберігаю зображення за допомогою firebase, я можу використовувати вхід firebase для безпеки
mrwaim

6
З вчорашнього дня Firebase випустила нову функцію під назвою Firebase Storage (firebase.google.com/docs/storage), яка дозволяє завантажувати та завантажувати довільні файли (зображення, відео, аудіо тощо). Він підтримується Google Cloud Storage (cloud.google.com/storage) за петабайтовою шкалою та конкурентоспроможною ціною. Ви обов'язково повинні це перевірити :)
Майк Макдональд,

16
Користувачі вважають його корисним, чому закрили його?
Amr Lotfy

7
@TinyGiant Це не просить рекомендації, то чому б це було закрито? Це питання про особливість послуги програмного забезпечення - повністю на тему.

2
я ненавиджу передчасні закриті коментарі. Питання прямого руху не повинні закриватися для любові до Бога!
Джеріл Кук

Відповіді:


277

Оновлення (20160519) : Firebase щойно випустила нову функцію під назвою Firebase Storage . Це дозволяє завантажувати зображення та інші дані, що не належать JSON, до спеціалізованої служби зберігання. Ми настійно рекомендуємо використовувати це для зберігання зображень, а не зберігати їх як закодовані базові дані в базі даних JSON.

Ви, звичайно, можете! Залежно від того, наскільки великі ваші зображення, у вас є кілька варіантів:

1. Для менших зображень (до 10 Мб)

У нас є приклад проекту, який робить це тут: https://github.com/firebase/firepano

Загальний підхід полягає у завантаженні файлу локально (за допомогою FileReader), щоб потім ви могли зберігати його у Firebase так само, як і будь-які інші дані. Оскільки зображення є двійковими файлами, вам потрібно отримати вміст, закодований base64, щоб ви могли зберігати його як рядок. Або ще зручніше, ви можете зберігати його як дані: url, який згодом готовий з'являтись як src тегу img (ось що робить приклад)!

2. Для більших зображень

Firebase має обмеження 10 Мб (рядків, кодованих utf8). Якщо ваше зображення більше, вам доведеться розбити його на 10 мб. Ви маєте рацію, хоча Firebase більш оптимізовано для невеликих рядків, які часто змінюються, а не багатомігабайтних рядків. Якщо у вас багато великих статичних даних, я напевно рекомендую натомість S3 або CDN.


2
Це круто. Ви коли-небудь стикалися з деяким обмеженням розміру файлу? Я не думаю, що Firebase була створена з багатомігабайтними рядками на увазі ...
MasterScrat

8
Firebase має обмеження 10 Мб (рядків, кодованих utf8). Якщо ваше зображення більше, вам доведеться розбити його на 10 мб. Ви маєте рацію, хоча Firebase більш оптимізовано для невеликих рядків, які часто змінюються, а не багатомігабайтних рядків. Якщо у вас багато великих статичних даних, я напевно рекомендую натомість S3 або CDN.
Майкл Лехенбауер

14
Firebase дійсно потребує додавання більшої пам’яті до своєї хостингової системи або екземпляра s3 з apis, вбудованим у їх бібліотеки.
The_Brink

9
@The_Brink Дякую за відгук. Це точно на нашому радарі!
Майкл Лехенбауер

4
@ezain Це правильно. Я, напевно, не рекомендував би такий підхід для великих виробничих майданчиків (ви дуже хочете, щоб послуга із обслуговування зображень підтримувалась CDN), але це просто і "досить добре" для великого використання.
Майкл Лехенбауер

25

Так, ви можете зберігати та переглядати зображення в Firebase. Щоб отримати файл зображення, ви можете скористатися інструментом вибору файлів. Тоді ви можете розмістити зображення, як хочете, я віддаю перевагу Amazon s3. Після розміщення зображення ви можете відображати його за допомогою URL-адреси, створеної для зображення.

Сподіваюсь, це допомагає.


3
Ознайомтеся з оновленими документами firbase для цього: firebase.google.com/docs/storage/#key_functions
Лукас Лієсіс

Якщо ви збираєтесь розмістити зображення на Amazon, чому б не зберегти його у Firebase Storage ?
Ojonugwa Jude Ochalifu

19

Нарешті я сам зберігав зображення у форматі base64. Я перекладаю їх з їх базового значення 64, коли мені дзвонять з firebase.


1
Єдина проблема такого підходу полягає в тому, що коли зображення є великими, переміщення їх у межах діяльності робить програму повільною, а в деяких випадках і
збоєм

10

Ви також можете скористатися сервісом під назвою, Filepickerяке зберігатиме ваше зображення на їх серверах, а Filepicker, який тепер називається Filestack, надасть вам URL-адресу для зображення. Ви можете, ніж зберегти URL, на Firebase.


Я бачив цю послугу з вашого коментаря, яку я намагався, але не дуже радий.
бполат

3

Є кілька способів зробити це, я спершу зробив так, як це зробив Грендал2501. Потім я зробив це так само, як user15163, ви можете зберігати URL-адресу зображення в базі даних і розміщувати зображення на своєму хості Firebase або також Amazon S3;


Помилка 403 при спробі вставити та відтворити зображення - проблеми з дозволом із завантаженими зображеннями - будь-яка інформація про налаштування завантаження. Я спробував використати acl: 'public-read' - але тоді завантаження закінчується - з 403. Будь-яка інформаційна політика щодо документа та політика, яка може допомогти - була б чудовою. AWS - документація є складною, і немає ніякої інформації про налагодження з помилкою, окрім доступу заборонено.
Джеймі

2
Задайте це як інше питання
Якоб Хартман

Справедлива ідея :) зроблено - хоча стек може бути різним - якщо є якісь підбурювання, ви можете дати мені - було б раді. Налагодження помилок AWS S3 надзвичайно засмучує - принаймні поки що. stackoverflow.com/questions/31998827/…
jamie

2

Використання рядка Base64 в JSON буде дуже важким. Парсер повинен зробити багато важких підйомів. В даний час Fresco підтримує лише базову підтримку Base64. Краще покладіть щось на Amazon Cloud або Firebase Cloud. І отримайте зображення у вигляді URL-адреси. Так що ви можете використовувати Picasso або Glide для кешування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.