ファイルを Cloud Storage 参照にアップロードした後で、ファイル メタデータを取得、更新して、コンテンツ タイプの更新などを行うことができます。ファイルには、追加のファイル メタデータを使用してカスタム Key-Value ペアを格納することもできます。
ファイル メタデータを取得する
ファイル メタデータには、Name
、SizeBytes
、ContentType
(多くの場合 MIME タイプと呼ばれます)などの一般的なプロパティに加え、ContentDisposition
や CreationTimeMillis
などのあまり一般的でないプロパティも含まれます。このメタデータは、GetMetadataAsync
メソッドを使用して Cloud Storage 参照から取得できます。
// Create reference to the file whose metadata we want to retrieve StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Get metadata properties forestRef.GetMetadataAsync().ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // do stuff with meta } });
ファイル メタデータを更新する
ファイルのアップロードが完了したら、MetadataChange
オブジェクトを取得する UpdateMetadataAsync
メソッドを使用して、いつでもファイル メタデータを更新できます。更新できるプロパティについて詳しくは、全一覧をご覧ください。メタデータに指定されているプロパティのみ更新され、それ以外のプロパティはすべて変更されずに残ります。
// Create reference to the file whose metadata we want to change StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.CacheControl = "public,max-age=300"; newMetadata.ContentType = "image/jpeg"; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { // access the updated meta data StorageMetadata meta = task.Result; } });
書き込み可能なメタデータ プロパティを削除するには、空の文字列を渡します。
// Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.ContentType = ""; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // meta.ContentType should be an empty string now } });
エラーを処理する
メタデータの取得または更新時にエラーが発生する理由として、ファイルが存在しない、目的のファイルのアクセス権がユーザーにないなど、多くの理由が考えられます。エラーについて詳しくは、このドキュメントのエラーの処理のセクションをご覧ください。
カスタム メタデータ
カスタム メタデータは Dictionary<string, string>
のようにして指定します。
var newMetadata = new MetadataChange { CustomMetadata = new Dictionary<string, string> { {"location", "Yosemite, CA, USA"}, {"activity", "Hiking"} } }; // UpdateMetadataAsync
各ファイルについてアプリ固有のデータをカスタム メタデータに格納することは可能ですが、このタイプのデータを格納して同期するには、データベース(Firebase Realtime Database など)を使用することを強くおすすめします。
ファイル メタデータのプロパティ
ファイルに関するメタデータ プロパティの一覧は次のとおりです。
プロパティ | 型 | MetadataChange で変更可能かどうか |
---|---|---|
Bucket |
string |
× |
Generation |
string |
× |
MetadataGeneration |
string |
× |
Path |
string |
× |
Name |
string |
× |
SizeBytes |
long |
× |
CreationTimeMillis |
long |
× |
UpdatedTimeMillis |
long |
× |
CacheControl |
string |
○ |
ContentDisposition |
string |
○ |
ContentEncoding |
string |
○ |
ContentLanguage |
string |
○ |
ContentType |
string |
○ |
DownloadUrl |
Uri |
いいえ |
DownloadUrls |
IList<Uri> |
× |
CustomMetadataKeys |
IEnumerable<string> |
○ |
次のステップ
ファイルのアップロード、ダウンロード、更新は重要ですが、ファイルを削除できることも重要です。Cloud Storage からファイルを削除する方法を学習しましょう。