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