API本身在設計上不能支持通過目錄上傳,因爲API純粹是如何與服務對話的合同;它本身並不具備對本地目錄結構的可見性。個人意志的工具,所以它實際上可能提供一個目錄名相同的斯威夫特CLI工具:
swift upload mycontainer mylocaldir
另一種API端的解決方案是斯威夫特的API中的批量上傳API。我們在SoftLayer和Bluemix對象存儲服務中啓用了此功能。如果您能夠將文件的tar/tar.gz/tar.bz2存檔上傳到API,則可以指示API在上傳完成後自動將其提取到您的帳戶或容器中。
下面是如何使用這個API的例子:
curl -i -X PUT -T stuff.tar.gz https://example.com/v1/AUTH_abc/container?extract-archive=tar.gz -H X-Auth-Token:mytoken
爲了包括對從文件中提取您的歸檔對象的前綴,你可以擴展上面的container
位包括container/my/prefix
。例如:
https://example.com/v1/AUTH_account/container/my/prefix?extract-archive=tar.gz
如果你想存檔到中抽出,使得在歸檔中的頂層文件夾成爲容器,你會完全忽略container
段。這將丟棄存檔中的所有頂層文件,因此在創建存檔時請確保所有文件都位於文件夾中。但你最終會得到一個URL是這樣的:
https://example.com/v1/AUTH_account/?extract-archive=tar.gz
注意,所支持的壓縮格式有焦油,tar.gz的,和TAR.BZ2。
更多細節的OpenStack的斯威夫特文檔中可用: http://docs.openstack.org/developer/swift/middleware.html#extract-archive
注意,我們可以使用捲曲--upload文件選擇本地文件進行上傳。 – Fred