0

Bluemix で迅速なオブジェクト ストアを使用して、マルチメディア イメージの一部を保存しています。SWIFT CLI ツールには、ディレクトリをオブジェクト ストアにアップロードするオプション --prefix があることに気付きました。オブジェクト ストアにはディレクトリ構造がないことは理解していますが、フォルダー構造の前にファイル名を付けることで階層を維持しています。CLI では --prefix オプションを使用してフォルダーをダウンロードでき、ダウンロード時に必要なディレクトリ構造が作成されます。

REST API を使用して実現される同様の機能を探しています。API ドキュメントでは、フォルダーに関する情報を提供する方法はありません。API を使用して同じ動作を実現する方法を知っている人はいますか?

ありがとうマノジ

4

2 に答える 2

1

Object Storage コンテナーが でアクセス可能であると仮定すると、探している階層を作成するためにhttps://host/AUTH_projectId/mycontainerでファイルを PUT できます。https://host/v1/AUTH_projectId/mycontainer/afolder/asubfolder/myfile.txt

curl -i https://host/v1/AUTH_projectId/mycontainer/afolder/asubfolder/myfile.txt -X PUT -H "Content-Length: 15" -H "Content-Type: " -H "X-Auth-Token: yourtoken"

この Openstack API を参照してください: http://developer.openstack.org/api-ref-objectstorage-v1.html#createOrReplaceObject

ダウンロード中にローカルでフォルダー階層を再作成したい場合は、明らかにあなた次第です。

于 2016-04-21T12:08:13.063 に答える
0

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 ) を参照してください。

于 2016-06-28T15:01:18.503 に答える