获取及更新文件元信息
更新时间:2023-01-06
文件元信息(Object Metadata),是对用户上传BOS的文件的属性描述,分为两种:HTTP标准属性(HTTP Headers)和User Meta(用户自定义元信息)。
获取文件元信息
通过 getObjectMetadata 方法可以只获取ObjectMetadata而不获取Object的实体,参考Demo。
如下代码所示:
ObjectMetadata objectMetadata = client.getObjectMetadata(bucketName, objectKey);
// 查看object元信息
System.out.println("contentType: " + objectMetadata.getContentType() + "\n" +
"contentLength: " + objectMetadata.getContentLength() + "\n" +
"contentMd5: " + objectMetadata.getContentMd5() + "\n" +
"etag: " + objectMetadata.getETag() + "\n" +
"storageClass: " + objectMetadata.getStorageClass() + "\n");
getObjectMetadata
方法返回的解析类中可供调用的参数有:
参数 | 说明 |
---|---|
contentType | Object的类型 |
contentLength | Object的大小 |
contentMd5 | Object的MD5 |
etag | Object的HTTP协议实体标签 |
storageClass | Object的存储类型 |
userMetadata | 如果在PutObject指定了userMetadata自定义meta,则返回此项 |
xBceCrc | 如果在PutObject指定了object的CRC值(循环冗余校验码),则返回此项 |
修改文件元信息
BOS修改Object的Metadata通过拷贝Object实现。即拷贝Object的时候,把目的Bucket设置为源Bucket,目的Object设置为源Object,并设置新的Metadata,通过拷贝自身实现修改Metadata的目的。如果不设置新的Metadata,则报错。
public void setObjectMeta(BosClient client, String bucketName, String objectKey, ObjectMetadata newObjectMetadata) {
CopyObjectRequest request = new CopyObjectRequest(bucketName, objectKey, bucketName, objectKey);
// 设置新的ObjectMetadata
request.setNewObjectMetadata(newObjectMetadata);
// 拷贝Object
CopyObjectResponse copyObjectResponse = client.copyObject(request);
// 打印结果
System.out.println("ETag: " + copyObjectResponse.getETag() + " LastModified: " + copyObjectResponse.getLastModified());
}