ThinkPHPのHttp類を使って、リモート画像を現地にダウンロードして、コードを実現します。
Http類はディレクトリThinkPHP/Lib/ORG/Netの下にあります。次はどうやって呼び出しますか?
<?php
import("Com.Buyback.QueryAmazon");
import("ORG.Net.Http");
class Image {
public static function getImage($isbn) {
$bookInformModel = D("bookinform");
$result = $bookInformModel->where("isbn='$isbn'")->select();
if($result[0]['image'] == ""){
$data['inform_id'] = $result[0]['inform_id'];
$remoteUrl = QueryAmazon::getImage($isbn);
if(!empty($remoteUrl['ImageURL'])){
$localUrl = "Public/bookcover/".$isbn.".jpg";
Http::curl_download($remoteUrl['ImageURL'], "./".$localUrl);
}else{
$localUrl = "Public/bookcover/unknownbook.png";
}
$data['image'] = $localUrl;
$bookInformModel->save($data);
return $localUrl;
}
return $result[0]['image'];
}
}
?>
ここで、まずデータベースの中にこの画像情報があるかどうかを判断します。amazonのwebserviceを呼び出して、遠隔から画像アドレスを取得してから
Http::curl_download($remoteUrl['ImageURL'], "./".$localUrl);
を使って、その中のcurl_downloadメソッドの最初のパラメータはリモートイメージアドレスで、2番目のパラメータはローカルアドレスに保存されます。はい、こんなに簡単です。