Używanie metadanych pliku w Cloud Storage dla C++

Po przesłaniu pliku do Cloud Storage możesz również wyświetlić i 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 content_type (często określane jako typ MIME), a także mniej typowe, takie jak content_disposition i time_created. Te metadane można pobrać z pliku referencyjnego Cloud Storage, używając metody GetMetadata.

// Create reference to the file whose metadata we want to retrieve
StorageReference forest_ref = storage_ref.Child("images/forest.jpg");

// Get metadata properties
Future future = forest_ref.GetMetadata();

// Wait for Future to complete...

if (future.Error() != firebase::storage::kErrorNone) {
  // Uh-oh, an error occurred!
} else {
  // We can now retrieve the metadata for 'images/forest.jpg'
  Metadata* metadata = future.Result();
}

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.

// Create reference to the file whose metadata we want to change
firebase::storage::StorageReference forest_ref = storage_ref.child("images/forest.jpg");

// Create file metadata to update
Metadata new_metadata;
newMetadata.set_cache_control("public,max-age=300");
newMetadata.set_content_type("image/jpeg");

// Update metadata properties
Future future = forest_ref.UpdateMetadata(new_metadata);

// Wait for Future to complete...

if (future.Error() != firebase::storage::kErrorNone) {
  // Uh-oh, an error occurred!
} else {
  // We can now retrieve the updated metadata for 'images/forest.jpg'
  Metadata* metadata = future.Result();
}

Aby usunąć właściwości meta danych, które można zapisać, możesz przekazać pusty ciąg znaków:

// Create file metadata with property to delete
StorageMetadata new_metadata;
new_metadata.set_content_type("");

// Delete the metadata property
Future future = forest_ref.UpdateMetadata(new_metadata);

// Wait for Future to complete...

if (future.Error() != 0) {
  // Uh-oh, an error occurred!
} else {
  // metadata.content_type() should be an empty string
  Metadata* metadata = future.Result();
}

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 dostępu do odpowiedniego 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 std::map zawierający std::stringwłaściwości.

std::map<std::string, std::string>* custom_metadata = metadata.custom_metadata();
custom_metadata->insert(std::make_pair("location", "Yosemite, CA, USA");
custom_metadata->insert(std::make_pair("activity", "Hiking");

Dane dotyczące poszczególnych aplikacji możesz przechowywać w metadanych niestandardowych, 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 const char* NIE
generation const char* NIE
metageneration const char* NIE
full_path const char* NIE
name const char* NIE
size int64_t NIE
time_created int64_t NIE
updated int64_t NIE
cache_control const char* TAK
content_disposition const char* TAK
content_encoding const char* TAK
content_language const char* TAK
content_type const char* TAK
download_urls std::vector<std::string> NIE
custom_metadata std::map<std::string, std::string> TAK

Następne kroki

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.