使用 Cloud Storage 文件元数据 (Unity)

在将文件上传到 Cloud Storage 引用之后,您还可以获取和更新文件元数据,例如更新内容类型。文件还可以使用额外的文件元数据来存储自定义键值对。

获取文件元数据

文件元数据包含一些常见的属性,例如 NameSizeBytesContentType(通常作为 MIME 类型被引用);也包含一些较不常见的属性,例如 ContentDispositionCreationTimeMillis 等。这些元数据可使用 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 方法随时更新文件元数据。请参考完整清单,详细了解什么属性可以更新。只有元数据中指定的属性才会更新,所有其他属性不会被修改。

// 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 实时数据库)来存储和同步这种类型的数据。

文件元数据属性

下面列出了文件中可使用的所有元数据属性:

属性 类型 是否可在 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 中删除文件

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面