Cloud Storage for Firebase позволяет загружать и публиковать контент, например изображения, аудио, видео и другие файлы (в том числе пользовательский контент), чтобы вы могли добавлять в свои приложения мультимедийные материалы. Ваши данные хранятся в сегменте Google Cloud Storage – решении для хранения объектов в масштабе эксабайта с высокой доступностью и глобальным резервированием. Cloud Storage for Firebase позволяет безопасно загружать эти файлы непосредственно с мобильных устройств и веб-браузеров, легко справляясь с нестабильными сетями.
Подготовка
Если вы ещё этого не сделали, ознакомьтесь с руководством по началу работы с приложениями Flutter. например:
Как создать проект Firebase.
Установка и инициализация Firebase SDK для Flutter.
Убедитесь, что для проекта Firebase выбран тарифный план Blaze с оплатой по мере использования. Это необходимо для работы с Cloud Storage for Firebase. Если вы раньше не работали с Firebase и Google Cloud, проверьте, можете ли вы получить бонус в размере 300 долларов США на бесплатную пробную версию.
Создайте сегмент Cloud Storage по умолчанию
В консоли Firebase выберите Databases & Storage (Базы данных и хранилище) > Storage (Хранилище).
Если в вашем проекте не используется тарифный план Blaze с оплатой по мере использования, вам будет предложено перейти на него.
Нажмите Начать.
Выберите местоположение для сегмента по умолчанию.
Для сегментов в регионах
,US-CENTRAL1 иUS-EAST1 можно использовать бесплатный уровень для Google Cloud Storage. Для сегментов во всех остальных местоположениях действуют тарифы и условия использования Google Cloud Storage.US-WEST1При желании вы можете позже создать несколько сегментов, каждый со своим местоположением.
Настройте Firebase Security Rules для сегмента по умолчанию. На этапе разработки рекомендуем настроить правила для общего доступа.
Нажмите Готово.
Теперь вы можете посмотреть сегмент в консоли Firebase (выберите Databases & Storage (Базы данных и хранилище) > Storage (Хранилище) > вкладка Files (Файлы)).
Формат названия сегмента по умолчанию: PROJECT_ID.firebasestorage.app
Как настроить общий доступ
Cloud Storage for Firebase предоставляет декларативный язык правил, который позволяет определить, как должны быть структурированы и проиндексированы ваши данные, а также когда их можно читать и записывать. По умолчанию доступ на чтение и запись в Cloud Storage ограничен, поэтому только аутентифицированные пользователи могут читать или записывать данные. Чтобы начать работу без настройки Firebase Authentication, вы можете настроить правила для публичного доступа.
Это сделает Cloud Storage доступным для всех, даже для тех, кто не использует ваше приложение, поэтому обязательно снова ограничьте доступ к Cloud Storage, когда настроите аутентификацию.
Добавьте Cloud Storage SDK в приложение
Чтобы установить плагин, выполните следующую команду в корневом каталоге проекта Flutter:
flutter pub add firebase_storageПосле этого пересоберите приложение Flutter:
flutter runИмпортируйте плагин в код Dart:
import 'package:firebase_storage/firebase_storage.dart';
Настройка Cloud Storage
Выполните команду
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 с несколькими аутентифицированными пользователями в одном приложении
Первый вариант идеально подходит, если у вас есть пользователи по всему миру и вы хотите хранить их данные рядом с ними. Например, вы можете создать сегменты в США, Европе и Азии для хранения данных пользователей в этих регионах, чтобы сократить задержку.
Второй вариант использования полезен, если у вас есть данные с разными шаблонами доступа. Например, вы можете настроить мультирегиональный или региональный сегмент для хранения изображений или другого часто используемого контента, а также сегмент Nearline или Coldline для хранения резервных копий пользователей или другого редко используемого контента.
В обоих случаях вам потребуется использовать несколько сегментов Cloud Storage.
Третий вариант подходит, если вы создаете приложение, например Google Диск, в котором пользователи могут входить в несколько аккаунтов (например, личный и рабочий). Для аутентификации каждого дополнительного аккаунта можно использовать собственный экземпляр приложения 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);
Дальнейшие действия
Подготовка к запуску приложения:
Включите App Check, чтобы доступ к сегментам хранилища был только у ваших приложений.
Настройте оповещения о бюджете для проекта в консоли Google Cloud.
Чтобы получить общее представление об использовании проекта в нескольких сервисах Firebase, отслеживайте панель управления Использование и оплата в консоли Firebase. Подробную информацию об использовании можно найти на панели Cloud Storage Использование.
Ознакомьтесь с контрольным списком для запуска Firebase.