2016-04-21 12 views
0

Ich verwende den swift-Objektspeicher auf Bluemix, um einige meiner Multimedia-Bilder zu speichern. Mir ist aufgefallen, dass das SWIFT CLI-Tool über die Option --prefix verfügt, um ein Verzeichnis in den Objektspeicher hochzuladen. Ich verstehe, dass der Objektspeicher nicht seine Verzeichnisstruktur hat, aber er behält die Hierarchie bei, indem er der Ordnerstruktur den Dateinamen voranstellt. CLI ermöglicht das Herunterladen des Ordners mit der Option --prefix und erstellt beim Herunterladen die erforderliche Verzeichnisstruktur.So laden Sie eine Verzeichnisstruktur im swift-Objektspeicher mit der swift-API hoch

Ich bin auf der Suche nach der ähnlichen Funktionalität durch die Verwendung der REST API. In der API-Dokumentation sehe ich keine Möglichkeit, die Informationen bezüglich des Ordners bereitzustellen. Kann jemand das gleiche Verhalten mit API erreichen?

Dank Manoj

Antwort

1

ist https://host/AUTH_projectId/mycontainer zugänglich Ihre Object Storage Container Unter der Annahme, können Sie eine Datei auf https://host/v1/AUTH_projectId/mycontainer/afolder/asubfolder/myfile.txt PUT die Hierarchie Sie suchen zu erstellen:

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" 

Siehe dieser Openstack API: http://developer.openstack.org/api-ref-objectstorage-v1.html#createOrReplaceObject

Offensichtlich, wenn Sie während des Downloads die Ordnerhierarchie lokal neu erstellen möchten, liegt es an Ihnen, dies zu tun.

+0

Bitte beachte, dass wir curl --upload-Datei verwenden, könnte eine lokale Datei zum Hochladen auszuwählen. – Fred

0

Die API selbst kann per Entwurf kein Upload nach Verzeichnis unterstützen, da die API lediglich einen Vertrag enthält, wie mit dem Dienst zu kommunizieren ist; für sich selbst hat es keine Sichtbarkeit in Ihrer lokalen Verzeichnisstruktur. Einzelne Werkzeuge wird, so ist es tatsächlich möglich, einen Verzeichnisnamen auf das gleiche Swift CLI-Tool liefern:

swift upload mycontainer mylocaldir 

Eine alternative API-Side-Lösung der Bulk-Upload-API innerhalb Swift API ist. Wir aktivieren dies sowohl im SoftLayer als auch im Bluemix Object Storage. Wenn Sie ein tar/tar.gz/tar.bz2-Archiv Ihrer Dateien in die API hochladen können, können Sie die API anweisen, diese nach Abschluss des Uploads automatisch in Ihr Konto oder Ihren Container zu extrahieren.

Hier ist ein Beispiel dafür, wie diese API zu verwenden:

curl -i -X PUT -T stuff.tar.gz https://example.com/v1/AUTH_abc/container?extract-archive=tar.gz -H X-Auth-Token:mytoken 

Um ein Präfix auf Objekte enthalten, die von Dateien in Ihrem Archiv extrahiert werden, können Sie die container Bit oben schließen container/my/prefix erstrecken. Zum Beispiel:

https://example.com/v1/AUTH_account/container/my/prefix?extract-archive=tar.gz 

Wenn Sie das Archiv möchten Behälter extrahiert werden, so dass die Ordner der obersten Ebene im Archiv werden, würden Sie das container Segment ganz weglassen. Dadurch werden alle Dateien der obersten Ebene im Archiv verworfen. Stellen Sie daher beim Erstellen des Archivs sicher, dass sich alle Dateien in Ordnern befinden. Aber Sie würden sich mit einem URL etwas am Ende wie folgt:

https://example.com/v1/AUTH_account/?extract-archive=tar.gz 

Beachten Sie, dass die Archiv unterstützten Formate sind tar, tar.gz und tar.bz2.

Weitere Informationen finden Sie in der Openstack Swift Dokumentation: http://docs.openstack.org/developer/swift/middleware.html#extract-archive