Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Po przesłaniu pliku do odwołania do Cloud Storage możesz także 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 pliku

Metadane pliku zawierają typowe właściwości, takie jak name , size i contentType (często określane jako typ MIME), oprócz niektórych mniej powszechnych właściwości, takich jak contentDisposition i timeCreated . Te metadane można pobrać z odwołania do Cloud Storage za pomocą metody getMetadata() . getMetadata() zwraca Promise zawierającą pełne metadane lub błąd w przypadku odrzucenia Promise .

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

Web version 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

Metadane pliku można zaktualizować w dowolnym momencie po zakończeniu przesyłania pliku za pomocą metody updateMetadata() . Zapoznaj się z pełną listą , aby uzyskać więcej informacji na temat właściwości, które można zaktualizować. Aktualizowane są tylko właściwości określone w metadanych, wszystkie inne pozostają niezmienione. updateMetadata() zwraca Promise zawierającą pełne metadane lub błąd w przypadku odrzucenia Promise .

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

Web version 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żesz usunąć właściwość metadanych, ustawiając ją na null :

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

Web version 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 plik nie istnieje lub użytkownik nie ma uprawnień dostępu do żądanego pliku. Więcej informacji na temat błędów można znaleźć w sekcji Obsługa błędów w dokumentacji.

Niestandardowe metadane

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

Web version 9

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

Web version 8

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

Możesz użyć niestandardowych metadanych do przechowywania dodatkowych danych specyficznych dla aplikacji dla każdego pliku, ale zdecydowanie zalecamy korzystanie z bazy danych (takiej jak Baza danych czasu rzeczywistego Firebase ) do przechowywania i synchronizowania 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 Możliwość zapisu
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 wysyłaniu, NIE przy updateMetadata
cacheControl strunowy TAK
contentDisposition strunowy TAK
contentEncoding strunowy TAK
contentLanguage strunowy TAK
contentType strunowy TAK
customMetadata Obiekt zawierający odwzorowania string->string TAK

Przesyłanie, pobieranie i aktualizowanie plików jest ważne, ale równie ważna jest możliwość ich usuwania. Nauczmy się, jak usuwać pliki z Cloud Storage.