ファイルを Cloud Storage 参照にアップロードした後で、ファイル メタデータを取得、更新して、コンテンツ タイプの更新などを行うことができます。ファイルには、追加のファイル メタデータを使用してカスタム Key-Value ペアを格納することもできます。
ファイル メタデータを取得する
ファイル メタデータには、name
、size
、content_type
(多くの場合 MIME タイプと呼ばれます)などの一般的なプロパティに加え、content_disposition
や time_created
などのあまり一般的でないプロパティも含まれます。このメタデータは、GetMetadata
メソッドを使用して Cloud Storage 参照から取得できます。
// Create reference to the file whose metadata we want to retrieve StorageReference forest_ref = storage_ref.Child("images/forest.jpg"); // Get metadata properties Futurefuture = 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(); }
ファイル メタデータを更新する
ファイルのアップロードが完了したら、UpdateMetadata
メソッドを使用して、いつでもファイル メタデータを更新できます。更新できるプロパティについて詳しくは、全一覧をご覧ください。メタデータに指定されているプロパティのみ更新され、それ以外のプロパティはすべて変更されずに残ります。
// 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 Futurefuture = 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(); }
書き込み可能なメタデータ プロパティは、空の文字列を渡すことで削除できます。
// Create file metadata with property to delete StorageMetadata new_metadata; new_metadata.set_content_type(""); // Delete the metadata property Futurefuture = 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(); }
エラーを処理する
メタデータの取得または更新時にエラーが発生する理由として、ファイルが存在しない、目的のファイルのアクセス権がユーザーにないなど、多くの理由が考えられます。エラーについて詳しくは、このドキュメントのエラーの処理のセクションをご覧ください。
カスタム メタデータ
カスタム メタデータは、std::string
プロパティを含む std::map
として指定できます。
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");
各ファイルについてアプリ固有のデータをカスタム メタデータに格納することは可能ですが、このタイプのデータを格納して同期するには、データベース(Firebase Realtime Database など)を使用することを強くおすすめします。
ファイル メタデータのプロパティ
ファイルに関するメタデータ プロパティの一覧は次のとおりです。
プロパティ | 型 | 書き込み可能 |
---|---|---|
bucket |
const char* | いいえ |
generation |
const char* | いいえ |
metageneration |
const char* | いいえ |
full_path |
const char* | いいえ |
name |
const char* | いいえ |
size |
int64_t | いいえ |
time_created |
int64_t | いいえ |
updated |
int64_t | いいえ |
cache_control |
const char* | はい |
content_disposition |
const char* | はい |
content_encoding |
const char* | はい |
content_language |
const char* | はい |
content_type |
const char* | はい |
download_urls |
std::vector<std::string> | いいえ |
custom_metadata |
std::map<std::string, std::string> | はい |
次のステップ
ファイルのアップロード、ダウンロード、更新は重要ですが、ファイルを削除できることも重要です。Cloud Storage からファイルを削除する方法を学習しましょう。