Я создаю веб-приложение, которое позволяет загружать файлы многих типов, некоторые из них очень большие. Бэкэнд построен с использованием Symfony (на самом деле v3.1, но я не думаю, что это имеет значение для проблемы), и я использую Gaufrette Пакет для взаимодействия с файловой системой. Я нашел это отличным решением, так как оно позволяет мне легко переключаться между локальным хранилищем и хранилищем облачных объектов в зависимости от типа и размера файла.
Однако мне не удается заставить его работать с хранилищем объектов Softlayer. Он имеет множество встроенных оболочек, один из них для облаков на основе OpenStack ( например, Rackspace или Softlayer), и документация кажется очень исчерпывающей, но я не могу успешно подключиться к Softlayer API.
Я пробовал как интеграцию в Symfony Bundle, так и использование библиотек непосредственно в своих классах, и ни один из них не работает, ниже последнего:
public function uploadFromUrl($url)
{
$connection = new OpenStack(
'https://fra02.objectstorage.softlayer.net/auth/v1.0/',
array(
'username' => 'myuser',
'password' => 'mykey'
)
);
dump($connection);
$objectStore = $connection->objectStoreService('cloudFiles', 'fra02', 'publicURL');
$adapter = new OpenCloudAdapter(
$objectStore,
'mycontainer'
);
$filesystem = new Filesystem($adapter);
$filename = pathinfo($url, PATHINFO_FILENAME);
$filesystem->write($filename, file_get_contents($url));
return $filename;
}
И ошибка, которую я получаю:
Client error response
[status code] 400
[reason phrase] Bad Request
[url] https://fra02.objectstorage.softlayer.net/auth/v1.0/tokens
Я подозреваю, что проблема связана с неправильным форматированием curl, который библиотека выполняет внутри, но у меня нет возможности узнать, какие параметры она передает и соответствуют ли они API Softlayer. Я пробовал примеры OpenStack и Rackspace, показанные в документации Gaufrette, но безуспешно.