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

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

Po zakończeniu przesyłania pliku możesz zaktualizować jego metadane w dowolnym momencie, używając 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!
  });

Możesz usunąć właściwość metadanych, ustawiając 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 Przetwarzanie błędów w 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śćTypMożliwość zapisu
bucketciąg znakówNIE
generationciąg znakówNIE
metagenerationciąg znakówNIE
fullPathciąg znakówNIE
nameciąg znakówNIE
sizeliczbaNIE
timeCreatedciąg znakówNIE
updatedciąg znakówNIE
md5Hashciąg znakówTAK w przypadku przesyłania, NIE w przypadku updateMetadata
cacheControlciąg znakówTAK
contentDispositionciąg znakówTAK
contentEncodingciąg znakówTAK
contentLanguageciąg znakówTAK
contentTypeciąg znakówTAK
customMetadataObiekt zawierający mapowania ciągu znaków na ciąg znakówTAK

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