我正在尝试update
我上传的一些Rackspace
对象的标头数据。示例标头attribute
如下所示:X-Object-Meta-name
但是要做到这一点,目前我需要下载整个object
并从下载的对象中parse
header
。然后根据需要进行一些检查和更新,然后再次上传对象。但这会使更新过程非常缓慢。
有没有办法只下载object
的header
部分并单独更新?提前感谢!
https://github.com/jclouds/jclouds/blob/master/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ObjectApi.java#L207
如果你给它一个带有"name"->"更新的标头值"的映射,它应该更新标头并自动添加 x-object-meta- 前缀。
有没有办法只下载对象的标题部分并单独更新它?
我不是 Java 开发人员,但 Cloud Files API 是一个 RESTful 的 API,所以我将使用 curl 提供示例。 如果您使用的是库,那么您可能希望编辑您的问题以包括哪个库,因为其中许多库抽象了这些操作,并且可能会在该库的上下文中提供更好的答案。
要下载不包含对象内容的标头,请执行 HTTP HEAD 请求。
$ curl -I -XHEAD -H'X-Auth-Token:******'
> https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_******/container/object
HTTP/1.1 200 OK
Content-Length: 400
Accept-Ranges: bytes
Last-Modified: Tue, 21 Apr 2015 12:06:23 GMT
Etag: 81dc9bdb52d04dc20036dbd8313ed055
X-Timestamp: 1429617982.70468
X-Object-Meta-Foo: Bar
Content-Type: text/html
X-Trans-Id: txd337e4634c98475baf1a4-0055363d42dfw1
Date: Tue, 21 Apr 2015 12:06:26 GMT
要仅更新对象上的标头,您可以执行 HTTP POST 请求。
$ curl -i -XPOST -H'X-Auth-Token:******'
> -H'X-Object-Meta-Foo: Bar'
> -H'X-Object-Meta-Foo2: Bar2'
> https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_******/container/object
HTTP/1.1 202 Accepted
Content-Length: 76
Content-Type: text/html; charset=UTF-8
X-Trans-Id: txc262dfe86727440cbfcb1-0055363d5cdfw1
Date: Tue, 21 Apr 2015 12:06:53 GMT
<html><h1>Accepted</h1><p>The request is accepted for processing.</p></html>
执行另一个 HEAD 重新设置将显示两个标头现在都存在。
$ curl -I -XHEAD -H'X-Auth-Token:******'
> https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_******/container/object
HTTP/1.1 200 OK
Content-Length: 400
Accept-Ranges: bytes
Last-Modified: Tue, 21 Apr 2015 12:06:53 GMT
Etag: 81dc9bdb52d04dc20036dbd8313ed055
X-Timestamp: 1429618012.98354
X-Object-Meta-Foo: Bar
X-Object-Meta-Foo2: Bar2
Content-Type: text/html
X-Trans-Id: txdd9365b54e8f4d8c8451d-0055363d6adfw1
Date: Tue, 21 Apr 2015 12:07:06 GMT