Создайте ссылку на облачное хранилище в Интернете

Ваши файлы хранятся в контейнере Cloud Storage . Файлы в этом контейнере представлены в иерархической структуре, подобно файловой системе на локальном жестком диске или данным в Firebase Realtime Database . Создавая ссылку на файл, ваше приложение получает к нему доступ. Эти ссылки затем можно использовать для загрузки или скачивания данных, получения или обновления метаданных, а также для удаления файла. Ссылка может указывать как на конкретный файл, так и на узел более высокого уровня в иерархии.

Если вы использовали Firebase Realtime Database , эти пути должны показаться вам очень знакомыми. Однако ваши данные хранятся в Cloud Storage , а не в Realtime Database .

Создать ссылку

Чтобы загрузить или скачать файлы, удалить их, а также получить или обновить метаданные, необходимо создать ссылку на файл, с которым вы хотите работать. Ссылку можно представить как указатель на файл в облаке. Ссылки занимают мало места, поэтому вы можете создавать их столько, сколько вам нужно, и их также можно использовать повторно для различных операций.

Чтобы создать ссылку, получите экземпляр сервиса Storage с помощью getStorage() , а затем вызовите ref() передав сервис в качестве аргумента. Эта ссылка указывает на корень вашего контейнера Cloud Storage .

Web

import { getStorage, ref } from "firebase/storage";

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

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

Web

// 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();

Вы можете создать ссылку на местоположение ниже в дереве, например, 'images/space.jpg' , передав этот путь в качестве второго аргумента при вызове ref() .

Web

import { getStorage, ref } from "firebase/storage";

const storage = getStorage();

// Create a child reference
const imagesRef = ref(storage, 'images');
// imagesRef now points to 'images'

// Child references can also take paths delimited by '/'
const spaceRef = ref(storage, 'images/space.jpg');
// spaceRef now points to "images/space.jpg"
// imagesRef still points to "images"

Web

// 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"

Вы также можете использовать свойства parent и root для навигации по файловой иерархии. parent перемещает на один уровень вверх, а root перемещает на самый верх.

Web

import { getStorage, ref } from "firebase/storage";

const storage = getStorage();
const spaceRef = ref(storage, 'images/space.jpg');

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

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

Web

// 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 и root могут быть объединены в цепочку несколько раз, поскольку каждый из них возвращает ссылку. Исключением является parent для root , который равен null .

Web

import { getStorage, ref } from "firebase/storage";

const storage = getStorage();
const spaceRef = ref(storage, 'images/space.jpg');

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

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

Web

// 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;

Справочные свойства

Вы можете просматривать ссылки, чтобы лучше понять, на какие файлы они указывают, используя свойства fullPath , name и bucket . Эти свойства содержат полный путь к файлу, его имя и контейнер, в котором он хранится.

Web

import { getStorage, ref } from "firebase/storage";

const storage = getStorage();
const spaceRef = ref(storage, 'images/space.jpg');

// 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;

Web

// 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;

Ограничения на ссылки

Пути ссылок и имена могут содержать любую последовательность допустимых символов Unicode, но налагаются определенные ограничения, в том числе:

  1. Общая длина reference.fullPath должна быть от 1 до 1024 байт в кодировке UTF-8.
  2. Символы возврата каретки и перевода строки отсутствуют.
  3. Избегайте использования # , [ , ] , * или ? , поскольку они плохо работают с другими инструментами, такими как Firebase Realtime Database или gsutil .

Полный пример

Web

import { getStorage, ref } from "firebase/storage";

const storage = getStorage();

// Points to the root reference
const storageRef = ref(storage);

// Points to 'images'
const imagesRef = ref(storageRef, 'images');

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

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

// File name is 'space.jpg'
const name = spaceRef.name;

// Points to 'images'
const imagesRefAgain = spaceRef.parent;

Web

// 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;

Далее давайте узнаем, как загружать файлы в Cloud Storage .