Firebase Storage Как хранить и получать изображения [закрыто]


269

Как хранить и просматривать изображения на firebase?


1
Это круто, если я храню изображения с помощью firebase, я могу использовать логины
firebase

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

16
Пользователи находят это полезным, почему закрыли это?
Амр Лотфи

7
@TinyGiant Это не просит рекомендации, так почему бы его закрыть как таковой? Он спрашивает об особенностях программного сервиса - полностью по теме.

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

Ответы:


277

Обновление (20160519) : Firebase только что выпустила новую функцию под названием Firebase Storage . Это позволяет загружать изображения и другие данные, отличные от JSON, в выделенную службу хранения. Мы настоятельно рекомендуем использовать это для хранения изображений, а не сохранять их как данные в кодировке base64 в базе данных JSON.

Вы, конечно, можете! В зависимости от размера ваших изображений у вас есть несколько вариантов:

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

У нас есть пример проекта, который делает это здесь: https://github.com/firebase/firepano

Общий подход заключается в загрузке файла локально (с использованием FileReader), чтобы вы могли затем сохранить его в Firebase, как и любые другие данные. Поскольку изображения являются двоичными файлами, вам нужно получить содержимое в кодировке base64, чтобы вы могли сохранить его в виде строки. Или, что еще удобнее, вы можете сохранить его в виде data: 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
Lukas Liesis

Если вы собираетесь разместить образ на Amazon, почему бы не сохранить его в Firebase Storage ?
Оджонугва Джуд Очалифу

19

Я закончил тем, что сохранил изображения в формате base64 самостоятельно. Я перевожу их из их значения base64 при обратном вызове из firebase.


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

10

Вы также можете использовать сервис под названием, Filepickerкоторый будет хранить ваше изображение на их серверах, а Filepicker, который теперь называется Filestack, предоставит вам ссылку на изображение. Вы можете сохранить ссылку на Firebase.


Я видел этот сервис из вашего комментария, который я пробовал, но не очень доволен этим.
Бполат

3

Есть несколько способов сделать это, я сначала сделал так, как это сделал Grendal2501. Затем я сделал это аналогично user15163, вы можете сохранить URL-адрес изображения в firebase и разместить его на хосте firebase или в Amazon S3;


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

2
Задайте это как еще один вопрос
Якоб Хартман

честная идея :) сделано - хотя стек может быть другим - если есть какой-либо побуждение, которое вы можете дать мне - будет приветствоваться. Отладка ошибок AWS S3 очень расстраивает - по крайней мере, пока. stackoverflow.com/questions/31998827/…
Джейми

2

Использование строки Base64 в JSON будет очень тяжелым. Парсер должен сделать много тяжелой работы. В настоящее время Fresco поддерживает только базовые версии Base64. Лучше положить что-нибудь в Amazon Cloud или Firebase Cloud. И получить изображение в виде URL. Так что вы можете использовать Пикассо или Glide для кэширования.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.