Croudiaで画像を上げる
カテゴリ:Croudia 投稿日:2016年3月5日お久しぶりです。Croudia REST APIの研究を続けていましたがどうしても画像のアップロードができずに半ば諦めていました。Croudia Developer Centerではなんか難しいリクエスト例が乗ってるし・・・
POST /2/statuses/update_with_media.json HTTP/1.1
Host: api.croudia.com
User-Agent: Chrome/28.0.1500.72
Content-Length: 30827
Authorization: Bearar b17dab8dfe459cd7145bb8f9e11eba105423173f7d5516278a5c522b2e459e30
Content-Type: multipart/form-data;boundary=——WebKitFormBoundarylB5PIGta0K4X5D0vAccept-Encoding: gzip
——WebKitFormBoundarylB5PIGta0K4X5D0v
Content-Disposition: form-data; name=”status”Hello world
——WebKitFormBoundarylB5PIGta0K4X5D0v
Content-Disposition: form-data; name=”media”; filename=”crouneko.png”
Content-Type: image/png<画像データ>
——WebKitFormBoundarylB5PIGta0K4X5D0v–
ちょっとした画像にHello Worldをささやくだけでこんなリクエストに。こんなんできるわけない。
しかし、2時間いろんなサイトを見て研究したところ、いとも簡単にできたので紹介します。PHPでcURLを用いてやります。
前提:<form method=”post” enctype=”multipart/form-data”>から送信。enctype属性はとても重要。そしてname=”text”にささやく内容、name=”userfile”に投稿する画像
session_start(); $header = [ "Host: api.croudia.com\r\nAuthorization: Bearer ".$_SESSION['at'] ]; //アクセストークンはSESSIONに入っているものとする $data = array('media'=>'@'.$_FILES['userfile'] ['tmp_name'].'; filename=>'.$_FILES['userfile']['name'].'; type=>$_FILES['userfile']['type']', status=>$_POST["text"]); //データ $ch = curl_init(); //cURL始め curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //POSTする内容をセット curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //認証情報のヘッダー curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, 'https://api.croudia.com/2/statuses/update_with_media.json'); //そして叩くURL! $result = curl_exec($ch); //実行! print_r($result); //statusオブジェクトが返ります curl_close($ch);
思ってたよりも簡単でした。こんなんに何時間も悩んでたんか・・・