Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

結合使用文件元數據和Cloud Storage for Unity

將文件上傳到Cloud Storage參考之後,您還可以獲取和更新文件元數據,例如更新內容類型。文件還可以存儲帶有其他文件元數據的自定義鍵/值對。

獲取文件元數據

文件元數據除包含諸如ContentDispositionCreationTimeMillis類的不太常見的屬性外,還包含諸如NameSizeBytesContentType (通常稱為MIME類型)之類的公共屬性。可以使用GetMetadataAsync方法從Cloud Storage引用中檢索此元數據。

// Create reference to the file whose metadata we want to retrieve
Firebase.Storage.StorageReference forest_ref =
  storage_ref.Child("images/forest.jpg");

// Get metadata properties
forest_ref.GetMetadataAsync().ContinueWith((Task<StorageMetadata> task) => {
  if (!task.IsFaulted && !task.IsCanceled) {
    Firebase.Storage.StorageMetadata meta = task.Result;
    // do stuff with meta
  }
});

更新文件元數據

您可以在文件上傳完成後的任何時間使用帶有MetadataChange對象的UpdateMetadataAsync方法來更新文件元MetadataChange 。請參閱完整列表 ,以獲取有關可以更新哪些屬性的更多信息。僅更新元數據中指定的屬性,所有其他屬性保持不變。

// Create reference to the file whose metadata we want to change
StorageReference forest_ref = storage_ref.child("images/forest.jpg");

// Create file metadata to update
var new_metadata = new Firebase.Storage.MetadataChange();
new_metadata.CacheControl = "public,max-age=300";
new_metadata.ContentType = "image/jpeg";

// Update metadata properties
forest_ref.UpdateMetadataAsync(new_metadata).ContinueWith(task => {
    if (!task.IsFaulted && !task.IsCanceled) {
        // access the updated meta data
        Firebase.Storage.StorageMetadata meta = task.Result;
    }
});

您可以通過傳遞空字符串來刪除可寫的元數據屬性:

// Create file metadata to update
var new_metadata = new Firebase.Storage.MetadataChange();
new_metadata.ContentType = "";

// Update metadata properties
forest_ref.UpdateMetadataAsync(new_metadata).ContinueWith(task => {
    if (!task.IsFaulted && !task.IsCanceled) {
        Firebase.Storage.StorageMetadata meta = task.Result;
        // meta.ContentType should be an empty string now
    }
});

處理錯誤

有多種原因導致獲取或更新元數據時可能會發生錯誤,包括文件不存在或用戶無權訪問所需文件。有關錯誤的更多信息,請參見文檔的“ 處理錯誤”部分。

自定義元數據

您可以將自定義元數據指定為Dictionary<string, string>

var new_metadata = new Firebase.Storage.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中刪除文件