Облачное хранилище для Firebase позволяет загружать и публиковать пользовательский контент, например изображения и видео, что позволяет встраивать мультимедийный контент в ваши приложения. Ваши данные хранятся в корзине Google Cloud Storage — решении для хранения объектов эксабайтного масштаба с высокой доступностью и глобальной избыточностью. Облачное хранилище для Firebase позволяет безопасно загружать эти файлы непосредственно с мобильных устройств и веб-браузеров, с легкостью обрабатывая нестабильные сети.
Прежде чем начать
Если вы еще этого не сделали, убедитесь, что вы прочитали руководство по началу работы с приложениями Flutter . Это включает в себя:
Создание проекта Firebase.
Установка и инициализация Firebase SDK для Flutter.
Убедитесь, что ваш проект Firebase включен в тарифный план Blaze с оплатой по факту использования . Если вы новичок в Firebase и Google Cloud, проверьте, имеете ли вы право на получение кредита в размере 300 долларов США .
Создайте сегмент Cloud Storage по умолчанию.
На панели навигации консоли Firebase выберите Storage .
Если ваш проект еще не включен в тарифный план Blaze с оплатой по мере использования, вам будет предложено обновить проект.
Нажмите «Начать» .
Выберите местоположение для корзины по умолчанию.
Ведра в
US-CENTRAL1
,US-EAST1
иUS-WEST1
может воспользоваться уровнем «Всегда бесплатно» для Google Cloud Storage . Во всех остальных местах сегменты соответствуют ценам и использованию Google Cloud Storage .При желании позже вы сможете создать несколько сегментов , каждый из которых будет иметь свое собственное местоположение.
Настройте Firebase Security Rules для корзины по умолчанию. Во время разработки рассмотрите возможность настройки правил публичного доступа .
Нажмите Готово .
Теперь вы можете просмотреть корзину на вкладке « Файлы Cloud Storage консоли Firebase . Ваш формат имени сегмента по умолчанию:PROJECT_ID .firebasestorage.app
.
Настройте общий доступ
Cloud Storage для Firebase предоставляет язык декларативных правил, который позволяет вам определить, как ваши данные должны быть структурированы, как они должны индексироваться и когда ваши данные можно читать и записывать. По умолчанию доступ для чтения и записи в Cloud Storage ограничен, поэтому только прошедшие проверку подлинности пользователи могут читать и записывать данные. Чтобы начать работу без настройки аутентификации Firebase , вы можете настроить правила для публичного доступа .
Это делает облачное хранилище открытым для всех, даже для людей, не использующих ваше приложение, поэтому обязательно снова ограничьте свое облачное хранилище при настройке аутентификации.
Добавьте SDK Cloud Storage в свое приложение
Из корня вашего проекта 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!
Следующий шаг? Узнайте, как создать ссылку на облачное хранилище .
Расширенная настройка
Есть несколько случаев использования, которые требуют дополнительной настройки:
- Использование сегментов Cloud Storage в нескольких географических регионах
- Использование сегментов Cloud Storage в разных классах хранилища
- Использование сегментов Cloud Storage с несколькими авторизованными пользователями в одном приложении.
Первый вариант использования идеален, если у вас есть пользователи по всему миру и вы хотите хранить их данные рядом с ними. Например, вы можете создать сегменты в США, Европе и Азии для хранения данных для пользователей в этих регионах, чтобы уменьшить задержку.
Второй вариант использования полезен, если у вас есть данные с разными шаблонами доступа. Например: вы можете настроить мультирегиональную или региональную корзину, в которой хранятся изображения или другой часто доступный контент, а также корзину ближней или холодной линии, в которой хранятся резервные копии пользователей или другой контент, к которому редко обращаются.
В любом из этих случаев вам понадобится использовать несколько сегментов Cloud Storage .
Третий вариант использования полезен, если вы создаете приложение, такое как Google Drive, которое позволяет пользователям иметь несколько учетных записей для входа в систему (например, личную учетную запись и рабочую учетную запись). Вы можете использовать собственный экземпляр приложения Firebase для аутентификации каждой дополнительной учетной записи.
Используйте несколько сегментов Cloud Storage
Если вы хотите использовать сегмент 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 .