PHPで、あるAPI操作プログラムを作成している。
CURL関数を使ってAPIを叩く仕様なのだが、バイナリデータをPUT送信する処理を書くのに時間がかかったので、備忘録としてまとめておく。
コード全文
$url = 'APIのURL';
$method = "PUT";
$headers = [
"Content-Type: application/octet-stream",
];
$filePath = './hogehoge.jpg';
$file = fopen($filePath, 'rb');
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_UPLOAD => true,
CURLOPT_URL => $url,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_BINARYTRANSFER => true,
CURLOPT_INFILE => $file,
CURLOPT_INFILESIZE => filesize($filePath),
]);
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
return $result;
バイナリデータを扱うため、fopen関数を使う必要がある。
その他、CURLのオプションについてはcurl_setopt_array関数を使ってまとめている。
コード実行後の変数$resultには、APIのJSON形式レスポンスが配列化されたものが入る。