Comienza a usar Cloud Storage en Flutter

Con Cloud Storage para Firebase, puedes subir y compartir contenido generado por los usuarios, como imágenes y videos, lo que te permite integrar contenido de rich media en tus apps. Los datos se almacenan en un bucket de Google Cloud Storage, una solución de almacenamiento de objetos a escala de exabytes con alta disponibilidad y redundancia global. Cloud Storage para Firebase te permite subir de forma segura estos archivos directamente desde dispositivos móviles y navegadores web, además de administrar las redes irregulares con facilidad.

Antes de comenzar

  1. Si aún no lo hiciste, asegúrate de haber completado la guía de introducción a las apps de Flutter. Esto incluye lo siguiente:

    • Crear un proyecto de Firebase.

    • Instalar y, luego, inicializar los SDK de Firebase para Flutter

  2. Asegúrate de que tu proyecto de Firebase tenga el plan de precios Blaze de pago por uso. Si es la primera vez que usas Firebase y Google Cloud, verifica si cumples con los requisitos para obtener un crédito de $300.

Crea un bucket predeterminado de Cloud Storage

  1. En el panel de navegación de Firebase console, selecciona Storage.

    Si tu proyecto aún no está en el plan de precios Blaze de pago por uso, se te pedirá que lo actualices.

  2. Haz clic en Comenzar.

  3. Selecciona una ubicación para el bucket predeterminado.

  4. Configura las Firebase Security Rules para tu bucket predeterminado. Durante el desarrollo, te recomendamos que configures reglas para el acceso público.

  5. Haz clic en Listo.

Ahora puedes ver el bucket en la pestaña Archivos de Cloud Storage de Firebase console. El formato predeterminado del nombre del bucket es PROJECT_ID.firebasestorage.app.

Configura el acceso público

Cloud Storage para Firebase proporciona un lenguaje de reglas declarativo que te permite definir cómo se deben estructurar los datos, cómo se deben indexar y cuándo se pueden leer y escribir. Según la configuración predeterminada, se restringe el acceso de lectura y escritura a Cloud Storage, por lo que solo los usuarios autenticados pueden leer o escribir datos. Para comenzar sin configurar Firebase Authentication, puedes definir tus reglas de acceso público.

Esto hace que Cloud Storage esté abierto para todo el mundo, incluso las personas que no usan tu app, así que asegúrate de volver a restringir Cloud Storage cuando configures la autenticación.

Agrega el SDK de Cloud Storage a tu app

  1. Desde la raíz de tu proyecto de Flutter, ejecuta el siguiente comando para instalar el complemento:

    flutter pub add firebase_storage
    
  2. Cuando termines, vuelve a compilar tu aplicación de Flutter:

    flutter run
    
  3. Importa el complemento en tu código Dart:

    import 'package:firebase_storage/firebase_storage.dart';
    

Configura Cloud Storage

  1. Ejecuta flutterfire configure desde el directorio de tu proyecto de Flutter. Esto actualiza el archivo de configuración de Firebase (firebase_options.dart) en la base de código de tu app para que tenga el nombre de tu bucket predeterminado de Cloud Storage.

  2. Para acceder a tu bucket de Cloud Storage, crea una instancia de FirebaseStorage:

    final storage = FirebaseStorage.instance;
    
    // Alternatively, explicitly specify the bucket name URL.
    // final storage = FirebaseStorage.instanceFor(bucket: "gs://<var>BUCKET_NAME</var>");
    

Estás listo para comenzar a usar Cloud Storage.

Paso siguiente: Obtén más información sobre cómo crear una referencia de Cloud Storage.

Configuración avanzada

Hay algunos casos de uso que necesitan configuración adicional:

El primer caso de uso es perfecto si tienes usuarios en todo el mundo y quieres almacenar sus datos cerca de ellos. Por ejemplo, puedes crear buckets en EE.UU., Europa y Asia para almacenar datos de usuarios de esas regiones, a fin de reducir la latencia.

El segundo caso de uso es útil si tienes datos con diferentes patrones de acceso. Por ejemplo, puedes configurar un bucket regional o multirregional que almacene fotos o cualquier tipo de contenido al que se accede con frecuencia y, por otro lado, un bucket de Nearline o Coldline que almacene copias de seguridad de usuarios y otros tipos de contenido a los que se accede con poca frecuencia.

En ambos casos, te recomendamos utilizar varios buckets de Cloud Storage.

El tercer caso de uso es útil si estás creando una app, como Google Drive, que permite a los usuarios acceder con varias cuentas (por ejemplo, una cuenta personal y una de trabajo). Puedes usar una instancia de app de Firebase personalizada para autenticar cada cuenta adicional.

Usa varios buckets de Cloud Storage

Si quieres usar un bucket de Cloud Storage distinto del predeterminado que se describió anteriormente o utilizar varios buckets de Cloud Storage en una sola app, puedes crear una instancia de FirebaseStorage que haga referencia a tu bucket personalizado:

// Get a non-default Storage bucket
final storage = FirebaseStorage.instanceFor(bucket: "gs://my-custom-bucket");

Trabaja con buckets importados

Cuando importes un bucket existente de Cloud Storage a Firebase, deberás permitir que Firebase acceda a estos archivos con la herramienta gsutil que se incluye en el SDK de Google Cloud:

gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://YOUR-CLOUD-STORAGE-BUCKET

Para encontrar el número de tu proyecto, sigue las instrucciones que se describen en la introducción a los proyectos de Firebase.

Esta acción no influye en los buckets creados recientemente, ya que el control de acceso predeterminado permite el acceso de Firebase. Esta es una medida temporal y se ejecutará de forma automática en el futuro.

Usa una app de Firebase personalizada

Si estás compilando una app más compleja con una FirebaseApp personalizada, puedes crear una instancia de FirebaseStorage que se inicialice con esa app:

// Use a non-default App
final storage = FirebaseStorage.instanceFor(app: customApp);

Próximos pasos