API 自体は、設計上、ディレクトリによるアップロードをサポートできません。これは、API が純粋にサービスと対話する方法の契約であるためです。それ自体では、ローカル ディレクトリ構造への可視性はありません。個々のツールはそうするので、実際には同じ Swift CLI ツールにディレクトリ名を提供することが可能です:
swift upload mycontainer mylocaldir
別の API 側のソリューションは、Swift の API 内の Bulk Upload API です。これは、SoftLayer サービスと Bluemix Object Storage サービスの両方で有効にします。ファイルの 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、tar.gz、および tar.bz2 であることに注意してください。
詳細については、OpenStack Swift のドキュメント (
http://docs.openstack.org/developer/swift/middleware.html#extract-archive ) を参照してください。