获取及更新文件元信息
更新时间:2023-01-06
文件元信息(Object Metadata),是对用户上传BOS的文件的属性描述,分为两种:HTTP标准属性(HTTP Headers)和User Meta(用户自定义元信息)。
获取文件元信息
通过 getObjectMetadata 方法可以只获取ObjectMetadata而不获取Object的实体,参考Demo。
如下代码所示:
Java
1ObjectMetadata objectMetadata = client.getObjectMetadata(bucketName, objectKey);
2// 查看object元信息
3System.out.println("contentType: " + objectMetadata.getContentType() + "\n" +
4 "contentLength: " + objectMetadata.getContentLength() + "\n" +
5 "contentMd5: " + objectMetadata.getContentMd5() + "\n" +
6 "etag: " + objectMetadata.getETag() + "\n" +
7 "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,则报错。
Java
1 public void setObjectMeta(BosClient client, String bucketName, String objectKey, ObjectMetadata newObjectMetadata) {
2
3 CopyObjectRequest request = new CopyObjectRequest(bucketName, objectKey, bucketName, objectKey);
4
5 // 设置新的ObjectMetadata
6 request.setNewObjectMetadata(newObjectMetadata);
7
8 // 拷贝Object
9 CopyObjectResponse copyObjectResponse = client.copyObject(request);
10
11 // 打印结果
12 System.out.println("ETag: " + copyObjectResponse.getETag() + " LastModified: " + copyObjectResponse.getLastModified());
13 }