Cloud Storage для Firebase позволяет вам загружать и делиться пользовательским контентом, таким как изображения и видео, что позволяет вам встраивать в свои приложения богатый медиаконтент. Ваши данные хранятся в контейнере Google Cloud Storage — решении для хранения объектов в масштабе экзабайт с высокой доступностью и глобальной избыточностью. Cloud Storage для Firebase позволяет вам безопасно загружать эти файлы напрямую с мобильных устройств и веб-браузеров, легко справляясь с нестабильными сетями.
Прежде чем начать
Если вы еще этого не сделали, убедитесь, что вы завершили руководство по началу работы с приложениями Flutter . Оно включает в себя:
Создание проекта Firebase.
Установка и инициализация Firebase SDK для Flutter.
Убедитесь, что ваш проект Firebase находится на тарифном плане Blaze с оплатой по мере использования . Если вы новичок в Firebase и Google Cloud, проверьте, имеете ли вы право на кредит в размере 300 долларов .
Создайте контейнер облачного хранилища по умолчанию
На панели навигации консоли Firebase выберите Хранилище .
Если ваш проект еще не включен в тарифный план Blaze с оплатой по факту использования, вам будет предложено обновить его.
Нажмите « Начать» .
Выберите местоположение для контейнера по умолчанию.
Ведра в
US-CENTRAL1
,US-EAST1
иUS-WEST1
может воспользоваться уровнем "Always Free" для Google Cloud Storage . Бакеты во всех других местах следуют ценам и использованию Google Cloud Storage .При желании вы можете позже создать несколько контейнеров , каждый из которых будет иметь свое собственное местоположение.
Настройте Firebase Security Rules для вашего контейнера по умолчанию. Во время разработки рассмотрите возможность настройки правил для публичного доступа .
Нажмите Готово .
Теперь вы можете просмотреть контейнер на вкладке Cloud Storage Files консоли Firebase . Формат имени контейнера по умолчанию:PROJECT_ID .firebasestorage.app
.
Настроить публичный доступ
Cloud Storage для Firebase предоставляет декларативный язык правил, который позволяет вам определять, как должны быть структурированы ваши данные, как они должны быть индексированы и когда ваши данные могут быть прочитаны и записаны. По умолчанию доступ для чтения и записи в Cloud Storage ограничен, поэтому только аутентифицированные пользователи могут читать или записывать данные. Чтобы начать работу без настройки аутентификации Firebase , вы можете настроить правила для публичного доступа .
Это делает облачное хранилище открытым для всех, даже для людей, не использующих ваше приложение, поэтому не забудьте снова ограничить свое облачное хранилище при настройке аутентификации.
Добавьте Cloud Storage SDK в свое приложение
Из корня вашего проекта Flutter выполните следующую команду для установки плагина:
flutter pub add firebase_storage
После завершения перестройте приложение Flutter:
flutter run
Импортируйте плагин в свой код Dart:
import 'package:firebase_storage/firebase_storage.dart';
Настройте облачное хранилище
Запустите
flutterfire configure
из каталога вашего проекта Flutter. Это обновит файл конфигурации Firebase (firebase_options.dart
) в кодовой базе вашего приложения, чтобы он имел имя вашего контейнера Cloud Storage по умолчанию.Получите доступ к своему хранилищу Cloud Storage, создав экземпляр
FirebaseStorage
:final storage = FirebaseStorage.instance; // Alternatively, explicitly specify the bucket name URL. // final storage = FirebaseStorage.instanceFor(bucket: "gs://<var>BUCKET_NAME</var>");
Вы готовы начать использовать облачное хранилище!
Следующий шаг? Узнайте, как создать ссылку на облачное хранилище .
Расширенная настройка
Есть несколько вариантов использования, требующих дополнительной настройки:
- Использование облачных хранилищ в нескольких географических регионах
- Использование контейнеров Cloud Storage в разных классах хранения
- Использование облачных хранилищ с несколькими аутентифицированными пользователями в одном приложении
Первый вариант использования идеален, если у вас есть пользователи по всему миру, и вы хотите хранить их данные рядом с ними. Например, вы можете создать контейнеры в США, Европе и Азии для хранения данных пользователей в этих регионах, чтобы сократить задержку.
Второй вариант использования полезен, если у вас есть данные с разными шаблонами доступа. Например: вы можете настроить мультирегиональный или региональный контейнер, который хранит изображения или другой часто используемый контент, и nearline или coldline контейнер, который хранит резервные копии пользователей или другой редко используемый контент.
В любом из этих случаев вам понадобится использовать несколько контейнеров облачного хранилища .
Третий вариант использования полезен, если вы создаете приложение, например Google Drive, которое позволяет пользователям иметь несколько учетных записей для входа (например, личную учетную запись и рабочую учетную запись). Вы можете использовать пользовательский экземпляр Firebase App для аутентификации каждой дополнительной учетной записи.
Используйте несколько облачных хранилищ
Если вы хотите использовать контейнер Cloud Storage, отличный от указанного выше по умолчанию, или использовать несколько контейнеров Cloud Storage в одном приложении, вы можете создать экземпляр FirebaseStorage
, который ссылается на ваш пользовательский контейнер:
// Get a non-default Storage bucket
final storage = FirebaseStorage.instanceFor(bucket: "gs://my-custom-bucket");
Работа с импортными ковшами
При импорте существующего контейнера Cloud Storage в Firebase вам придется предоставить Firebase возможность доступа к этим файлам с помощью инструмента gsutil
, включенного в Google Cloud SDK :
gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://YOUR-CLOUD-STORAGE-BUCKET
Номер вашего проекта можно найти, как описано во введении к проектам Firebase .
Это не влияет на вновь созданные бакеты, поскольку у них есть контроль доступа по умолчанию, разрешающий Firebase. Это временная мера, и она будет выполняться автоматически в будущем.
Используйте пользовательское приложение Firebase
Если вы создаете более сложное приложение с использованием пользовательского FirebaseApp
, вы можете создать экземпляр FirebaseStorage
, инициализированный с этим приложением:
// Use a non-default App
final storage = FirebaseStorage.instanceFor(app: customApp);
Следующие шаги
- Подготовьтесь к запуску вашего приложения:
- Включите проверку приложений , чтобы гарантировать, что доступ к вашим хранилищам смогут получить только ваши приложения.
- Настройте оповещения о бюджете для вашего проекта в Google Cloud Console.
- Контролируйте панель управления использованием и выставлением счетов в консоли Firebase, чтобы получить общую картину использования вашего проекта в нескольких сервисах Firebase. Вы также можете посетить панель управления использованием облачного хранилища для получения более подробной информации об использовании.
- Ознакомьтесь с контрольным списком запуска Firebase .