LoginSignup
7
6

More than 5 years have passed since last update.

ImgurのAPIを利用し匿名画像アップロード(PHP編)

Last updated at Posted at 2016-05-01

imgurとは?

よく2ちゃんで利用されている最強画像アップローダーのimgur、ご存知でしょうか?
匿名で画像アップロードできて、なおかつ無期限で保存されているので便利です。
これを今回はPHPから使ってみます。結果はjsonで取れます。

ちなみにRuby編なら既存でありました。こちらです。
最強の画像アップロードサイト「Imgur.com」のAPIを利用する(匿名画像アップロード編)

ImgurAPIをPHPで利用

API叩いてみましょう。

環境

・PHP7

会員登録

まずはimgurで会員登録してください。登録後ログインします。

クライアントID取得

会員登録しログインしたら、まずはクライアントIDを取得します。
Register an Application
を埋めていきます。

Application nameとAuthorization typeを埋めましょう。
今回はAnonymousにします。
callback URLは適切なものをお願いします。
あとメアドも入力します。

以上でSubmit!

登録後、クライアントIDを控えます。

さっそくPHPで利用してみる。

jsonで返ってくるようにしてあります。適当に利用してください。

index.php
<?
if(isset($_FILES['img'])) $img = $_FILES['img'];
if(isset($_POST['submit'])){ 
 if($img['name']==''){  
  echo "画像を選択してください";
 }else{
  $filename = $img['tmp_name'];  
  $client_id="abb66f6794xa77c";//各自のクライアントIDを入力
  $handle = fopen($filename, "r");
  $data = fread($handle, filesize($filename));
  $pvars   = array('image' => base64_encode($data));
  $timeout = 30;
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, 'https://api.imgur.com/3/image.json');
  curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
  curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Client-ID ' . $client_id));
  curl_setopt($curl, CURLOPT_POST, 1);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars);
  $out = curl_exec($curl);
  curl_close ($curl);
  $pms = json_decode($out,true);
  var_dump($pms);
 }
} else {
print<<<EOF
  <form action="index.php" enctype="multipart/form-data" method="POST">
  <input name="img" size="35" type="file"/><br/>
  <input type="submit" name="submit" value="アップロード"/>
  </form>
EOF;
}
7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6