Używanie metadanych pliku w Cloud Storage w internecie

Po przesłaniu pliku do referencji Cloud Storage możesz też pobierać lub aktualizować jego metadane, na przykład aby zaktualizować typ treści. Pliki mogą też przechowywać niestandardowe pary klucz-wartość z dodatkowymi metadanymi pliku.

Pobieranie metadanych pliku

Metadane plików zawierają popularne właściwości, takie jak name, size i contentType (często określane jako typ MIME), a także niektóre mniej typowe właściwości, np. contentDisposition i timeCreated. Te metadane można pobrać z referencji Cloud Storage za pomocą metody getMetadata(). getMetadata() zwraca wartość Promise zawierającą pełne metadane lub zwraca błąd, jeśli Promise odrzuca.

Web Modular API

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

// Create a reference to the file whose metadata we want to retrieve
const storage = getStorage();
const forestRef = ref(storage, 'images/forest.jpg');

// Get metadata properties
getMetadata(forestRef)
  .then((metadata) => {
    // Metadata now contains the metadata for 'images/forest.jpg'
  })
  .catch((error) => {
    // Uh-oh, an error occurred!
  });

Interfejs API internetowej przestrzeni nazw

// Create a reference to the file whose metadata we want to retrieve
var forestRef = storageRef.child('images/forest.jpg');

// Get metadata properties
forestRef.getMetadata()
  .then((metadata) => {
    // Metadata now contains the metadata for 'images/forest.jpg'
  })
  .catch((error) => {
    // Uh-oh, an error occurred!
  });

Aktualizowanie metadanych pliku

Metadane pliku możesz zaktualizować w dowolnym momencie po zakończeniu jego przesyłania. Aby to zrobić, użyj metody updateMetadata(). Więcej informacji o tym, które właściwości można zaktualizować, znajdziesz na pełnej liście. Zaktualizowane zostaną tylko właściwości określone w metadanych, a pozostałe pozostaną bez zmian. updateMetadata() zwraca kod Promise zawierający pełne metadane lub błąd, jeśli Promise odrzuca.

Web Modular API

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

// Create a reference to the file whose metadata we want to change
const storage = getStorage();
const forestRef = ref(storage, 'images/forest.jpg');

// Create file metadata to update
const newMetadata = {
  cacheControl: 'public,max-age=300',
  contentType: 'image/jpeg'
};

// Update metadata properties
updateMetadata(forestRef, newMetadata)
  .then((metadata) => {
    // Updated metadata for 'images/forest.jpg' is returned in the Promise
  }).catch((error) => {
    // Uh-oh, an error occurred!
  });

Interfejs API internetowej przestrzeni nazw

// Create a reference to the file whose metadata we want to change
var forestRef = storageRef.child('images/forest.jpg');

// Create file metadata to update
var newMetadata = {
  cacheControl: 'public,max-age=300',
  contentType: 'image/jpeg'
};

// Update metadata properties
forestRef.updateMetadata(newMetadata)
  .then((metadata) => {
    // Updated metadata for 'images/forest.jpg' is returned in the Promise
  }).catch((error) => {
    // Uh-oh, an error occurred!
  });

Aby usunąć właściwość metadanych, ustaw ją na null:

Web Modular API

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

const storage = getStorage();
const forestRef = ref(storage, 'images/forest.jpg');

// Create file metadata with property to delete
const deleteMetadata = {
  contentType: null
};

// Delete the metadata property
updateMetadata(forestRef, deleteMetadata)
  .then((metadata) => {
    // metadata.contentType should be null
  }).catch((error) => {
    // Uh-oh, an error occurred!
  });

Interfejs API internetowej przestrzeni nazw

// Create file metadata with property to delete
var deleteMetadata = {
  contentType: null
};

// Delete the metadata property
forestRef.updateMetadata(deleteMetadata)
  .then((metadata) => {
    // metadata.contentType should be null
  }).catch((error) => {
    // Uh-oh, an error occurred!
  });

Obsługa błędów

Błędy mogą występować z różnych powodów, np. gdy plik nie istnieje lub użytkownik nie ma uprawnień dostępu do niego. Więcej informacji o błędach znajdziesz w sekcji Obsługa błędów w tej dokumentacji.

Niestandardowe metadane

Możesz określić metadane niestandardowe jako obiekt zawierający właściwości String.

Web Modular API

const metadata = {
  customMetadata: {
    'location': 'Yosemite, CA, USA',
    'activity': 'Hiking'
  }
};

Interfejs API internetowej przestrzeni nazw

var metadata = {
  customMetadata: {
    'location': 'Yosemite, CA, USA',
    'activity': 'Hiking'
  }
};

Możesz użyć niestandardowych metadanych do przechowywania dodatkowych danych związanych z aplikacją w przypadku każdego pliku, ale zdecydowanie zalecamy korzystanie z bazy danych (np. Bazy danych czasu rzeczywistego Firebase) do przechowywania i synchronizowania danych tego typu.

Właściwości metadanych pliku

Pełna lista właściwości metadanych pliku jest dostępna poniżej:

Właściwość Typ Z możliwością zapisu
bucket string, NO
generation string, NO
metageneration string, NO
fullPath string, NO
name string, NO
size Liczba NO
timeCreated string, NO
updated string, NO
md5Hash string, TAK przy przesyłaniu, NIE w aktualizacji metadanych
cacheControl string, TAK
contentDisposition string, TAK
contentEncoding string, TAK
contentLanguage string, TAK
contentType string, TAK
customMetadata Obiekt zawierający mapowania ciągu znaków TAK

Przesyłanie, pobieranie i aktualizowanie plików jest bardzo ważne, ale trzeba też móc je usuwać. Dowiedz się, jak usuwać pliki z Cloud Storage.