ConoHaのオブジェクトストレージへ画像のアップロード方法
下記を参考にしながら、アプリからサーバーに送られてきたバイナリデータをオブジェクトストレージにアップロード(保存)したいのですが、どうしてもうまくいきません。
ConoHaオブジェクトストレージを使ってみよう(REST API編)
検索しながら色々試しているのですが、その中の一つが下記の記述になります。
$image_binary = $_POST['image'];
$curl = curl_init();
$fp = tmpfile();
fwrite($fp, $image_binary, strlen($image_binary));
fseek($fp, 0, SEEK_SET);
$headers = array(
'X-Auth-Token: ' . AUTH_TOKEN,
'Content-Type: image/jpeg',
);
$options = array(
CURLOPT_PUT => true,
CURLOPT_INFILE => $fp,
CURLOPT_URL => [エンドポイントURL]/[アカウント名]/[コンテナ名]/[オブジェクト名],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $headers,
);
curl_setopt_array($curl, $options);
$body = curl_exec($curl);
if(curl_errno($curl)) {
$msg = sprintf('cURL error: %s', curl_error($curl));
throw new RuntimeException($msg);
}
$status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if($status_code != 201) {
$msg =sprintf('Error. The server returned status code(%d).', $status_code);
throw new RuntimeException($msg);
}
$status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
echo "status code: " . $status_code . "\n";
そうしますと下記のようなエラーが出ます。
Warning: fwrite() expects parameter 1 to be resource, boolean given in
Warning: fseek() expects parameter 1 to be resource, boolean given in
Warning: curl_setopt_array(): supplied argument is not a valid File-Handle resource in
そもそも、画像を送信するときは下記のようなファイル書き込みのような作業は必要なのでしょうか?
$fp = tmpfile();
fwrite($fp, $image_binary, strlen($image_binary));
fseek($fp, 0, SEEK_SET);
それと、できればオブジェクトストレージに保存したあとは、保存場所のURLにアクセスすると閲覧できるようにしたいと思っているのですが、その場合バイナリデータで保存するのではなく、下記のように、デコードして保存するべきなのでしょうか?
できればそのやりかたも知りたいです。
$photo = base64_decode($image_binary);
間違いだらけのコードのような気がしてしょうがないのですが、参考になるURLや助言をいただけると大変助かります。
よろしくお願いします。
ーーー追記ーーー
情報不足でしたので追記します。
下記の部分は、すでにアプリ側で文字列(BASE64)に変換したものを渡しています。
$image_binary = $_POST['image'];