Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

Если вы использовали базы данных Firebase в реальном времени , эти пути должны показаться очень знакомым. Тем не менее, ваши данные файла хранятся в облачном хранилище, а не в базе данных в реальном времени.

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

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

Создание ссылок из storage() службы в приложении Firebase. Эта ссылка указывает на корень вашей корзины Cloud Storage.

Веб-версия 9

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

Веб-версия 8

// 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' с помощью child() метод на существующей ссылки.

Веб-версия 9

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"

Веб-версия 8

// 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 переходит весь путь к вершине.

Веб-версия 9

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

Веб-версия 8

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

Веб-версия 9

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;

Веб-версия 8

// 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 свойства. Эти свойства получают полный путь к файлу, имя файла и сегмент, в котором он хранится.

Веб-версия 9

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;

Веб-версия 8

// 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 в реальном времени или GSUtil .

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

Веб-версия 9

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;

Веб-версия 8

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

Далее, давайте узнаем , как загружать файлы в облачном хранилище.