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

Po przesłaniu pliku do referencji Cloud Storage możesz też uzyskać i aktualizacji metadanych pliku, np. w celu zaktualizowania typu treści. Pliki umożliwia również przechowywanie niestandardowych par klucz-wartość z dodatkowymi metadanymi pliku.

Pobieranie metadanych pliku

Metadane pliku zawierają typowe właściwości, takie jak name, size, content_type (często nazywanych typem MIME) oprócz mniej powszechnych takie jak content_disposition i time_created. Metadane te mogą być pobrano z odwołania Cloud Storage za pomocą 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

Metadane pliku możesz zaktualizować w dowolnym momencie po zakończeniu przesyłania, poprzez za pomocą metody UpdateMetadata. Zapoznaj się z pełna lista. można zaktualizować. Aktualizowane są tylko właściwości określone w metadanych, wszystkie pozostałe pozostaną niezmienione.

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

Możesz usunąć dostępne do zapisu właściwości metadanych, przekazując 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 mogą być spowodowane przez różne metadanych, w tym pliku, który nie istnieje, lub użytkownika, który nie ma uprawnień; aby uzyskać dostęp do wybranego pliku. Więcej informacji o błędach znajdziesz w Obsługa błędów sekcji dokumentów.

Niestandardowe metadane

Możesz określić metadane niestandardowe jako element std::map zawierający std::string usług.

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

W przypadku każdego pliku możesz przechowywać dane dotyczące konkretnej aplikacji w niestandardowych metadanych, ale zalecamy korzystanie z bazy danych (takiej jak Bazy danych czasu rzeczywistego Firebase) do przechowywania i synchronizowania tego typu i skalowalnych danych.

Właściwości metadanych pliku

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

Właściwość Typ Z możliwością zapisu
bucket znak stały* NIE
generation znak stały* NIE
metageneration znak stały* NIE
full_path znak stały* NIE
name znak stały* NIE
size int64_t, NIE
time_created int64_t, NIE
updated int64_t, NIE
cache_control znak stały* TAK
content_disposition znak stały* TAK
content_encoding znak stały* TAK
content_language znak stały* TAK
content_type znak stały* 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, aby je usunąć. Zobaczmy, jak usuwanie plików z Cloud Storage.