在网页上使用文件元数据

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

获取文件元数据

文件元数据包含 namesizecontentType(通常称为 MIME 类型)等常用属性,以及 contentDispositiontimeCreated 等不太常用的属性。您可以使用 getMetadata() 方法从 Cloud Storage 引用中检索这些元数据。getMetadata() 会返回包含完整元数据的 Promise;如果 Promise 拒绝,则返回错误。

// Create a reference to the file whose metadata we want to retrieve
var forestRef = storageRef.child('images/forest.jpg');

// Get metadata properties
forestRef.getMetadata().then(function(metadata) {
  // Metadata now contains the metadata for 'images/forest.jpg'
}).catch(function(error) {
  // Uh-oh, an error occurred!
});

更新文件元数据

文件上传完成后,您可以使用 updateMetadata() 方法随时更新文件元数据。请参考完整清单,详细了解哪些属性可以更新。只有元数据中指定的属性才会更新,所有其他属性将保持不变。updateMetadata() 会返回包含完整元数据的 Promise;如果 Promise 拒绝,则返回错误。

// Create a reference to the file whose metadata we want to change
var forestRef = storageRef.child('images/forest.jpg');

// Create file metadata to update
var newMetadata = {
  cacheControl: 'public,max-age=300',
  contentType: 'image/jpeg'
}

// Update metadata properties
forestRef.updateMetadata(newMetadata).then(function(metadata) {
  // Updated metadata for 'images/forest.jpg' is returned in the Promise
}).catch(function(error) {
  // Uh-oh, an error occurred!
});

如果要删除元数据属性,只需将其设为 null 即可:

// Create file metadata with property to delete
var deleteMetadata = {
  contentType: null
}

// Delete the metadata property
forestRef.updateMetadata(deleteMetadata).then(function(metadata) {
  // metadata.contentType should be null
}).catch(function(error) {
  // Uh-oh, an error occurred!
});

处理错误

获取或更新元数据时,有很多原因会引发错误,包括文件不存在或者用户无权访问相关的文件。如需了解有关错误的详细信息,请参阅文档的处理错误部分。

自定义元数据

您可以将自定义元数据指定为包含 String 属性的对象。

var metadata = {
  customMetadata: {
    'location': 'Yosemite, CA, USA',
    'activity': 'Hiking'
  }
}

您可以在自定义元数据中为每个文件存储应用专属的数据,不过我们强烈建议您使用数据库(例如 Firebase 实时数据库)来存储和同步这种类型的数据。

文件元数据属性

下面提供了文件中可使用的元数据属性的完整列表:

属性 类型 是否可写入
bucket 字符串
generation 字符串
metageneration 字符串
fullPath 字符串
name 字符串
size 数字
timeCreated 字符串
updated 字符串
md5Hash 字符串 上传时可以,更新元数据时不可以
cacheControl 字符串
contentDisposition 字符串
contentEncoding 字符串
contentLanguage 字符串
contentType 字符串
customMetadata 包含字符串到字符串映射的对象

上传、下载和更新文件很重要,但能够将其移除也同样重要。请参阅如何从 Cloud Storage 中删除文件

发送以下问题的反馈:

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