首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >openstack4j是否支持上传图片时设置header?

openstack4j是否支持上传图片时设置header?
EN

Stack Overflow用户
提问于 2017-12-20 16:08:48
回答 2查看 288关注 0票数 1

我有一些关于OpenStack swift对象存储的问题。我想为对象设置一个过期时间。我使用openstack4j。我的上传对象代码

代码语言:javascript
复制
public void add(String objectName, InputStream imageStream) {
    OSClientV3 clientV3 = OSFactory.clientFromToken(swiftOS.getToken());
    Map<String, String> metaData = new HashMap<>();
    metaData.put("X-Delete-After", "120");
    ObjectPutOptions objectPutOptions = ObjectPutOptions.create();
    objectPutOptions.metadata(metaData);
    clientV3.objectStorage().objects().put(container, objectName,
            Payloads.create(imageStream), objectPutOptions);
}

但它不起作用。然后我尝试使用swift命令行。

代码语言:javascript
复制
swift stat test test-19b8e4d4-1085-490d-b866-97f0ada0d46c

我得到的是

代码语言:javascript
复制
               Account: AUTH_01d73f1e49ed4dfd9535c831eed4ccf9
             Container: test
                Object: test-19b8e4d4-1085-490d-b866-97f0ada0d46c
          Content Type: application/octet-stream
        Content Length: 2414
         Last Modified: Wed, 20 Dec 2017 07:58:56 GMT
                  ETag: 1cb55838010ed189c0698b6b5cade3ed
   Meta X-Delete-After: 120
X-Openstack-Request-Id: tx4f1f57ef08e34d9296bfd-005a3a184b
           X-Timestamp: 1513756735.97761
            X-Trans-Id: tx4f1f57ef08e34d9296bfd-005a3a184b
         Accept-Ranges: bytes

当我通过以下方式上传对象时

代码语言:javascript
复制
swift upload test test.jpg -H "X-Delete-After: 120"

然后

代码语言:javascript
复制
swift stat test test.jpg

我得到的是

代码语言:javascript
复制
    Account: AUTH_01d73f1e49ed4dfd9535c831eed4ccf9
              Container: test
                 Object: test.jpg
           Content Type: application/octet-stream
         Content Length: 1688
          Last Modified: Wed, 20 Dec 2017 08:03:20 GMT
                   ETag: 8a2d75ff8db40610a52a492abac09d3b
             Meta Mtime: 1513755398.217256
            X-Delete-At: 1513757119
          Accept-Ranges: bytes
            X-Timestamp: 1513756999.02865
             X-Trans-Id: txc016e1aff901450aa934b-005a3a194c
 X-Openstack-Request-Id: txc016e1aff901450aa934b-005a3a194c

就像openstack document说的那样。

代码语言:javascript
复制
The X-Delete-After header takes an integer number of seconds. 
The proxy server that receives the request will convert this 
header into an X-Delete-At header using its current time plus 
the value given.

但是为什么openstack4j不能工作呢?

EN

回答 2

Stack Overflow用户

发布于 2018-03-15 04:47:37

看起来我们可以用

代码语言:javascript
复制
objectPutOptions.getOptions().put("X-Delete-After", "120");

当getOptions调用返回时,头部映射成垂直向上。

票数 2
EN

Stack Overflow用户

发布于 2017-12-21 17:42:50

您应该使用header而不是metadata:

代码语言:javascript
复制
objectPutOptions.header("X-Delete-After", "120");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47901422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档