將檔案上傳到 Cloud Storage 參考後,您還可以獲得和更新檔案元數據,例如更新內容類型。文件還可以儲存自訂鍵/值對以及其他文件元資料。
取得文件元數據
檔案元資料包含常見屬性,例如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 即時資料庫)來儲存和同步此類資料。
文件元資料屬性
下面提供了文件元資料屬性的完整清單:
財產 | 類型 | 可在 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> | 是的 |
下一步
上傳、下載和更新檔案很重要,但刪除它們的能力也很重要。讓我們了解如何從雲端儲存中刪除檔案。