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

Używaj metadanych plików w Cloud Storage w sieci

Po przesłaniu pliku do odwołania do Cloud Storage możesz również pobrać lub zaktualizować metadane pliku, na przykład w celu zaktualizowania typu zawartości. Pliki mogą również przechowywać niestandardowe pary klucz/wartość z dodatkowymi metadanymi pliku.

Pobierz metadane plików

Metadata zawiera wspólne właściwości, takie jak name , size i contentType (często określane jako typ MIME) oprócz niektórych mniej spotykane jak contentDisposition i timeCreated . Te metadane mogą być pobierane z odniesieniem Cloud Storage używając getMetadata() metody. getMetadata() zwraca Promise zawierający kompletny metadanych lub błąd jeśli Promise odrzuca.

Wersja internetowa 9

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

Wersja internetowa 8

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

Zaktualizuj metadane pliku

Można zaktualizować metadane plików w dowolnym czasie po dopełnia przesyłania plików przy użyciu updateMetadata() metody. Zapoznać się z pełną listą , aby uzyskać więcej informacji na temat tego, co właściwości mogą być aktualizowane. Aktualizowane są tylko właściwości określone w metadanych, wszystkie pozostałe pozostają niezmienione. updateMetadata() zwraca Promise zawierający kompletny metadanych lub błąd jeśli Promise odrzuca.

Wersja internetowa 9

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

Wersja internetowa 8

// 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żna usunąć obiekt metadanych przez ustawienie go na null :

Wersja internetowa 9

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

Wersja internetowa 8

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

Istnieje wiele powodów, dla których mogą wystąpić błędy podczas pobierania lub aktualizowania metadanych, w tym brak pliku lub brak uprawnień dostępu użytkownika do żądanego pliku. Więcej informacji na temat błędów można znaleźć w Błędy obchodzić części docs.

Metadane niestandardowe

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

Wersja internetowa 9

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

Wersja internetowa 8

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

Możesz użyć niestandardowych metadanych do przechowywania dodatkowych danych aplikacji specyficznych dla każdego pliku, ale zalecamy przy użyciu bazy danych (takich jak Database Firebase Realtime ) do przechowywania i synchronizacji tego typu danych.

Właściwości metadanych pliku

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

Nieruchomość Rodzaj Zapisywalny
bucket strunowy NIE
generation strunowy NIE
metageneration strunowy NIE
fullPath strunowy NIE
name strunowy NIE
size numer NIE
timeCreated strunowy NIE
updated strunowy NIE
md5Hash strunowy TAK przy przesyłaniu, NIE przy aktualizacjiMetadata
cacheControl strunowy TAK
contentDisposition strunowy TAK
contentEncoding strunowy TAK
contentLanguage strunowy TAK
contentType strunowy TAK
customMetadata Obiekt zawierający string->string mapping TAK

Przesyłanie, pobieranie i aktualizowanie plików jest ważne, ale także możliwość ich usunięcia. Nauczmy się, jak usunąć pliki z Cloud Storage.