はい、S3使ったら苦労はないということはわかってます、ただ、転送量無料は正義です。
リファレンスも少しわかりにくかったので、メモ。
$optionsの内容についてはconohaの管理画面にある。
使ってるopenstackは▽
https://github.com/php-opencloud/openstack/blob/master/doc/index.rst
まずは、composerで入れてね。
$ composer require php-opencloud/openstack
use OpenStack\OpenStack;
use Guzzle\Http\Exception\ClientErrorResponseException;
use GuzzleHttp\Psr7\Stream;
$options = [
'authUrl' => env('CONOHA_AUTH_URL'), // APIの認証URL
'username' => env('CONOHA_USERNAME'), // API ユーザーのユーザー名
'password' => env('CONOHA_PASSWORD'), // API ユーザーのパスワード
'tenantName' => env('CONOHA_TENANT_NAME'), // テナント情報のテナント名
];
try {
$client = new OpenStack($options);
$identityService = $client->identityV2();
$service = $client->objectStoreV1([
'identityService' => $identityService,
'catalogName' => 'Object Storage Service',
]);
//コンテナの存在確認
//ここはもしかすると作成だけでも良いかもしれない
if ($service->containerExists('test')) {
$container = $service->getContainer('test');
}else{
//コンテナが存在しない場合はコンテナを作成する
$container_name = array(
'name' => 'test',
'readAccess' => '.r:*' //パブリックアクセスにする
);
$container = $service->createContainer($container_name);
}
//gazelleでアップするファイルを読み込み
$stream = new Stream(fopen('/var/www/html/app/webroot/img/unko.png', 'r'));
$file_option = [
'name' => 'unko.png', //オブジェクトストレージ保存するファイル名
'stream' => $stream, //これはファイルの本体データ
];
//ファイル(オブジェクトをアップする)
$container->createObject($file_option);
// コンテナ内のオブジェクト一覧の取得
$objects = $container->listObjects();
// コンテナの中のオブジェクトのパブリックURLを取得する
foreach ($objects as $object) {
$images_url[] = $object->getPublicUri();
}
続いて、ACL関係も調査予定。