API сам по дизайну не может поддерживать загрузку по каталогу, поскольку API - это просто договор о том, как разговаривать с сервисом; сам по себе он не имеет видимости в вашей локальной структуре каталогов. Отдельные инструменты, так что на самом деле можно поставить имя каталога для той же инструмента Swift 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 Swift: http://docs.openstack.org/developer/swift/middleware.html#extract-archive
Обратите внимание, что мы могли бы использовать локон --upload-файл, чтобы выбрать локальный файл для загрузки. – Fred