簡體   English   中英

使用Java API在Openstack Swift中復制文件時如何指定可選參數

[英]How can I specify optional parameters when copy files in Openstack Swift using Java API

我在Java應用程序中使用Rackspace Cloud Files(Openstack Swift),並且具有以下情況:我將文件上傳到容器(通過Web應用程序,通過我的java rest后端)到機架空間容器中的臨時位置,然后發生某些事件(用戶確認保存表單),我需要將這些文件移動到該容器中的持久位置。

我需要先從Web應用程序下載這些文件,所以在上傳文件時,我指定了標頭:

Content-Disposition=attachment;filename=thefilename.xxx

另外,我為臨時存儲X-Delete-At中的文件指定了標頭,因此如果用戶不保存表單,它們可以自動刪除。

對於復制文件,我使用ObjectApi中的方法:

boolean copy(String destinationObject, String sourceContainer, String sourceObject)

它復制文件內容,文件元數據,但不復制Content-Disposition 復制后似乎無法對其進行設置。

問題在於, Cloud Files REST API允許為復制的目標文件指定Content-Disposition標頭,而Java API不允許。 我想知道是否存在一種方法來擴展該API或以某種方式調用所需標頭的服務。

幫助我解決問題的是將jcouds庫升級到2.0.3版

在此版本中, ObjectApi包含參數化的copy()方法,允許為復制的文件指定另一個標頭(發送X-Fresh-Metadata標頭)。

這是我指定Content-Disposition標頭的方式,避免復制X-Delete-At標頭:

Map<String, String> contentMetadata = new HashMap<>();
contentMetadata.put("Content-Type", "image/jpeg");
contentMetadata.put("Content-Disposition", "attachment; filename=\"myfilename.jpg\"");
objectApi.copy(toPath, containerName, fromPath, new HashMap<>(), contentMetadata, CopyOptions.NONE);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM