將檔案元資料與 Cloud Storage for Unity 結合使用

將檔案上傳到 Cloud Storage 參考後,您還可以獲得和更新檔案元數據,例如更新內容類型。文件還可以儲存自訂鍵/值對以及其他文件元資料。

取得文件元數據

檔案元資料包含常見屬性,例如NameSizeBytesContentType (通常稱為 MIME 類型),以及一些不太常見的屬性,例如ContentDispositionCreationTimeMillis 。可以使用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>是的

下一步

上傳、下載和更新檔案很重要,但刪除它們的能力也很重要。讓我們了解如何從雲端儲存中刪除檔案