Edited at

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

More than 3 years have passed since last update.


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;

}