ファイルを Cloud Storage 参照にアップロードした後で、ファイル メタデータを取得、更新して、コンテンツ タイプの表示や更新などを行うことができます。ファイルには、追加のファイル メタデータを使用してカスタム Key-Value ペアを格納することもできます。
ファイル メタデータを取得する
ファイル メタデータには、name
、size
、contentType
(多くの場合 MIME タイプと呼ばれます)などの一般的なプロパティに加え、contentDisposition
や timeCreated
などのあまり一般的でないプロパティも含まれます。このメタデータは、getMetadata()
メソッドを使用して Cloud Storage 参照から取得できます。
// Create reference to the file whose metadata we want to retrieve
final forestRef = storageRef.child("images/forest.jpg");
// Get metadata properties
final metadata = await forestRef.getMetadata();
// Metadata now contains the metadata for 'images/forest.jpg'
ファイル メタデータを更新する
ファイルのアップロードが完了したら、updateMetadata()
メソッドを使用して、いつでもファイル メタデータを更新できます。更新できるプロパティについて詳しくは、全一覧をご覧ください。メタデータに指定されているプロパティのみ更新され、それ以外のプロパティはすべて変更されずに残ります。
// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");
// Create file metadata to update
final newMetadata = SettableMetadata(
cacheControl: "public,max-age=300",
contentType: "image/jpeg",
);
// Update metadata properties
final metadata = await forestRef.updateMetadata(newMetadata);
// Updated metadata for 'images/forest.jpg' is returned
書き込み可能なメタデータ プロパティを削除するには、次のように null
を渡します。
// Delete the cacheControl property
final newMetadata = SettableMetadata(cacheControl: null);
final metadata = await forestRef.updateMetadata(newMetadata);
エラーを処理する
メタデータの取得または更新時にエラーが発生する理由として、ファイルが存在しない、目的のファイルのアクセス権がユーザーにないなど、多くの理由が考えられます。エラーについての詳細は、ドキュメントのエラーを処理するのセクションをご覧ください。
カスタム メタデータ
カスタム メタデータは、SettableMetadata
コンストラクタの customMetadata
パラメータを使用して指定できます。
// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");
// Create file metadata to update
final newCustomMetadata = SettableMetadata(
customMetadata: {
"location": "Yosemite, CA, USA",
"activity": "Hiking",
},
);
// Update metadata properties
final metadata = await forestRef.updateMetadata(newCustomMetadata);
// Updated metadata for 'images/forest.jpg' is returned
各ファイルについてアプリ固有のデータをカスタム メタデータに格納することは可能ですが、このタイプのデータを格納して同期するには、データベース(Firebase Realtime Database など)を使用することを強くおすすめします。
ファイル メタデータのプロパティ
ファイルに関するメタデータ プロパティの一覧は次のとおりです。
プロパティ | 型 | 設定可能? |
---|---|---|
bucket |
String |
× |
generation |
String |
× |
metageneration |
String |
× |
metadataGeneration |
String |
× |
fullPath |
String |
× |
name |
String |
× |
size |
int |
× |
timeCreated |
DateTime |
× |
updated |
DateTime |
× |
md5Hash |
String |
× |
cacheControl |
String |
○ |
contentDisposition |
String |
○ |
contentEncoding |
String |
○ |
contentLanguage |
String |
○ |
contentType |
String |
○ |
customMetadata |
Map<String, String> |
○ |
ファイルのアップロード、ダウンロード、更新は重要ですが、ファイルを削除できることも重要です。Cloud Storage からファイルを削除する方法を学習しましょう。