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形式レスポンスが配列化されたものが入る。