Ir para o console

Criar uma referência do Storage na Web

Seus arquivos são armazenados em um intervalo do Google Cloud Storage. Eles são apresentados em estrutura hierárquica, exatamente como o sistema de arquivos no seu disco rígido local ou os dados no Firebase Realtime Database. O app ganha acesso a um arquivo quando cria uma referência a ele, que pode ser usada para fazer upload ou download de dados, receber ou atualizar metadados ou excluir o arquivo. Uma referência pode apontar para um arquivo específico ou para um node de nível superior na hierarquia.

Caso já tenha usado o Firebase Realtime Database, talvez os caminhos pareçam familiares para você ou pelo menos deveriam. Porém, os dados dos arquivos são armazenados no Google Cloud Storage, não no Realtime Database.

Criar uma referência

Para fazer upload, download e excluir arquivos ou receber e atualizar metadados, é necessário criar uma referência ao arquivo com que você quer trabalhar. Podemos pensar nas referências como ponteiros para um arquivo na nuvem. As referências são leves, para que você possa criar tantas quantas precisar, e também são reutilizáveis para várias operações.

Crie referências do serviço storage() no seu app do Firebase. Elas apontam para a raiz do seu intervalo do Cloud Storage.

// Get a reference to the storage service, which is used to create references in your storage bucket
var storage = firebase.storage();

// Create a storage reference from our storage service
var storageRef = storage.ref();

Para criar uma referência a um local inferior da árvore, como 'images/space.jpg', use o método child() em uma referência já existente.

// Create a child reference
var imagesRef = storageRef.child('images');
// imagesRef now points to 'images'

// Child references can also take paths delimited by '/'
var spaceRef = storageRef.child('images/space.jpg');
// spaceRef now points to "images/space.jpg"
// imagesRef still points to "images"

Também é possível usar as propriedades parent e root para navegar pela hierarquia do arquivo. parent navega até um nível acima, enquanto root navega até o topo.

// Parent allows us to move to the parent of a reference
var imagesRef = spaceRef.parent;
// imagesRef now points to 'images'

// Root allows us to move all the way back to the top of our bucket
var rootRef = spaceRef.root;
// rootRef now points to the root

child(), parent e root podem ser encadeadas várias vezes, pois cada uma retorna uma referência. A exceção é a parent de root, que é null.

// References can be chained together multiple times
var earthRef = spaceRef.parent.child('earth.jpg');
// earthRef points to 'images/earth.jpg'

// nullRef is null, since the parent of root is null
var nullRef = spaceRef.root.parent;

Propriedades de referência

Com as propriedades fullPath, name e bucket, você pode inspecionar as referências e entender melhor os arquivos para os quais elas apontam. Essas propriedades recebem o caminho completo e o nome do arquivo, além do intervalo em que ele está armazenado.

// Reference's path is: 'images/space.jpg'
// This is analogous to a file path on disk
spaceRef.fullPath;

// Reference's name is the last segment of the full path: 'space.jpg'
// This is analogous to the file name
spaceRef.name;

// Reference's bucket is the name of the storage bucket where files are stored
spaceRef.bucket;

Limitações das referências

Os caminhos e os nomes das referências podem conter qualquer sequência de caracteres válidos Unicode, mas com algumas restrições como:

  1. O tamanho total do reference.fullPath precisa ser de 1 a 1.024 bytes quando estiver codificado em UTF-8.
  2. Não conter nenhum caractere de retorno de carro ou nova linha.
  3. Evite usar #, [, ], * ou ?. Esses caracteres não funcionam bem com o Firebase Realtime Database ou o gsutil.

Exemplo completo

// Points to the root reference
var storageRef = firebase.storage().ref();

// Points to 'images'
var imagesRef = storageRef.child('images');

// Points to 'images/space.jpg'
// Note that you can use variables to create child values
var fileName = 'space.jpg';
var spaceRef = imagesRef.child(fileName);

// File path is 'images/space.jpg'
var path = spaceRef.fullPath

// File name is 'space.jpg'
var name = spaceRef.name

// Points to 'images'
var imagesRef = spaceRef.parent;

A seguir, veja como fazer upload de arquivos para o Cloud Storage.