オブジェクトストレージ「cloud.z.com」へファイルをPUTしたいのですが上手く行きません。
Curlでの送信方法が手探りのPHPの勉強不足で、時間もかかってしまっている為
アップロードまでのソースを書いていくか、または教授頂けますと幸いです。
・やりたいこと
GMOクラウドのサーバにある
disc/1/test.mp4
を、オブジェクトストレージへアップロードしたい。
アップしたいファイルは
基本的には mp4 動画ファイル(1~2Gくらいまでの容量)
phpで生成した json ファイル
こちら2点となります。
オブジェクトストレージ側のAPI説明を元に
https://cloud.z.com/jp/guide/swift-object_upload/
Request
curl -i -X PUT \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
https://object-storage.jpt1.cloud.z.com/v1/ze_テナントID/コンテナ名/ \
-T オブジェクト名
この操作をPHP Curl で操作したいのですが、うまく動きません。。。
X-Auth-Token: トークンID などは別のAPI
例)
https://cloud.z.com/jp/guide/swift-get_object_content_and_metadata/
を利用して、正常に情報を取得できているのでトークンなどのAPI接続が出来ていないとは考えにくいです。
取り急ぎ jpg ファイルを上げてみようと思って調べて書いてみました。が動きませんでした。。。
以下、ソースコード
$token_id = 別APIで取得した値
$filePath = 'disc/1/01.jpg';
$cfile = new CURLFile($filePath,'image/jpeg','test_name');
$params = array('image' => $cfile);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept:application/json',
'Content-Type:application/json',
'X-Auth-Token:'.$token_id,
]);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); // メソッド指定
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 証明書の検証を行わない
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // レスポンスを文字列で受け取る
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params );
$result = json_decode(curl_exec($ch) , true);
curl_close($ch);
print_r($result); exit;
↑白紙で動かず
ざっくりとした説明で恐縮ですがご協力頂けますと幸いです。