將檔案上傳至 Cloud Storage 參考資料後,您也可以取得並更新檔案中繼資料,例如查看或更新內容類型。檔案也可以儲存自訂鍵/值組合,以及其他檔案中繼資料。
取得檔案中繼資料
檔案中繼資料包含常見的屬性,例如 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 即時資料庫) 來儲存及同步處理這類資料。
檔案中繼資料屬性
以下列出檔案中所有中繼資料屬性:
屬性 | 類型 | 是否可設定? |
---|---|---|
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 刪除檔案。