Używanie metadanych pliku w Cloud Storage w internecie

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

Pobieranie metadanych pliku

Metadane pliku zawierają typowe właściwości, takie jak name, size i contentType (często określane jako typ MIME), a także mniej typowe, takie jak contentDisposition i timeCreated. Te metadane można pobrać z pliku referencyjnego Cloud Storage za pomocą metody getMetadata(). Funkcja getMetadata() zwraca Promise zawierający kompletne metadane lub błąd, jeśli Promise zostanie odrzucony.

Web

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

Web

// 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 aktualizować, znajdziesz na tej liście. Zaktualizowane zostaną tylko właściwości określone w metadanych. Wszystkie pozostałe pozostaną bez zmian. Funkcja updateMetadata() zwraca Promise zawierający pełne metadane lub błąd, jeśli Promise zostanie odrzucony.

Web

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

Web

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

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

Web

// 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 podczas pobierania lub aktualizowania metadanych mogą wystąpić z różnych powodów, na przykład z powodu braku pliku lub braku uprawnień użytkownika do wybranego pliku. Więcej informacji o błędach znajdziesz w sekcji Obsługa błędów w tej dokumentacji.

Niestandardowe metadane

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

Web

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

Web

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

Możesz używać niestandardowych metadanych do przechowywania dodatkowych danych dotyczących aplikacji dla każdego pliku, ale zdecydowanie zalecamy używanie bazy danych (np. Firebase Realtime Database) do przechowywania i synchronizowania tego typu danych.

Właściwości metadanych pliku

Poniżej znajdziesz pełną listę właściwości metadanych pliku:

Właściwość Typ Możliwość zapisu
bucket ciąg znaków NIE
generation ciąg znaków NIE
metageneration ciąg znaków NIE
fullPath ciąg znaków NIE
name ciąg znaków NIE
size liczba NIE
timeCreated ciąg znaków NIE
updated ciąg znaków NIE
md5Hash ciąg znaków TAK w przypadku przesyłania, NIE w przypadku updateMetadata
cacheControl ciąg znaków TAK
contentDisposition ciąg znaków TAK
contentEncoding ciąg znaków TAK
contentLanguage ciąg znaków TAK
contentType ciąg znaków TAK
customMetadata Obiekt zawierający mapowania ciąg znaków > ciąg znaków TAK

Przesyłanie, pobieranie i aktualizowanie plików jest ważne, ale równie ważne jest ich usuwanie. Dowiedz się, jak usuwać pliki z usługi Cloud Storage.