ホームページ >バックエンド開発 >PHPチュートリアル >PHPでリモート画像を取得する方法
要件: 個人の WeChat、Weibo、または QQ アカウントのアバターをアプリケーションのアバターとして使用する必要があります。これらのアバターは期限切れになるか、利用できなくなる可能性があるため、最初にこれらの画像をローカルにダウンロードしてから、Qiniu にアップロードする必要があります。次に、Qiniu の画像アドレスを引用します。
以下は codeIgniter での書き方です:
/**
* 情報ページ
*/
classテストは Wap_base を拡張します
{
/**
* コンストラクター
*/
public function __construct()
{
parent::__construct();
}
/**
* サードパーティのログインアバターを取り出して Qiniu サーバーに置き、新しい URL を返します
* @param string $url
* @return array
*/
private function UploadOneImage($url)
{
$this->load->library('qiniu/upfile', '', 'upfile');
$pathInfo = pathinfo ($url);
$imageInfo = !空($url) ? getimagesize($url) : array(
'mime' => 'application/unown'
);
$uploadError = '';
if (! in_array($imageInfo['mime'],explode(',', FILE_TYPES))) {
$uploadError = "上传文件【{$pathInfo['basename']}】格式が違います!";
}
if(strpos($imageInfo['mime'],'jpeg') !== FALSE) {
if(strpos($pathInfo['basename'],'jpg') === FALSE) {
$filename = '/tmp/'.$pathInfo['basename'].'.jpg';
}
}elseif(strpos($imageInfo['mime'],'gif') !== FALSE) {
if(strpos ($pathInfo['basename'],'gif') === FALSE) {
$filename = '/tmp/'.$pathInfo['basename'].'.gif';
}
}elseif(strpos( $imageInfo['mime'],'png') !== FALSE) {
if(strpos($pathInfo['basename'],'png') === FALSE) {
$filename = '/tmp/' .$pathInfo['basename'].'.png';
}
}elseif(strpos($imageInfo['mime'],'bmp') !== FALSE) {
if(strpos($pathInfo['basename '],'bmp') === FALSE) {
$filename = '/tmp/'.$pathInfo['basename'].'.bmp';
}
}
//curl获取图片并写入到本地文件中
$fp = fopen($filename,'wb');
$ch =curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_FILE,$fp);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_TIMEOUT,5);
curl_exec($ch);
fclose($f p);
curl_close($ ch);
$fileurl = '';
if (empty($filename)) {
$uploadError = "上传文件失败,临時文件名空!";
}
}
if (ファイルサイズ($ファイル名) > MAX_FILE_SIZE * 1024 * 1024) {🎜 $uploadError = "上传文件【$filename】大小超过制限!";
} else {
$basename = basename($filename);
$uploadResult = $this->upfile->upload(QINIU_UPLOAD_BUCKET, $basename, $filename, 0);
//var _dump($uploadResult) ;
$fileurl = isset($uploadResult['smallimageurl']) && $uploadResult['smallimageurl'] != '' ? $uploadResult['smallimageurl'] : '';
}
if (! empty($uploadError) ) {
return ['result'=>FALSE,'fileurl'=>$fileurl,'error'=>$uploadError];
}else {
return ['result'=>TRUE,'fileurl' =>$fileurl,'error'=>$uploadError];
}
}
public function Index()
{
$url = 'http://wx.qlogo.cn/mmopen/bv5hAQW59rmliaaIuGuSL QbcIAumib0rCribkBKqNKhrqzSTrnjrhprldIPKyRu2JZdW9S6qFK4NEpibcUDWbsXUUlEWUQ4eFkcm/ 0';
//マイクロ信内の画像ファイルは画像の形式で直接提供されていないため、これらのファイル名が正当であることを七牛サーバーに転送する必要があります。0 肯定は実行されません。 = microtime(TRUE);
$result = $this->uploadOneImage($url);
echo '実行方法の使用時間:'.$during .'
';
}
以上は、php がプログラムの図を取得する 1 つの方法であり、側面の内容も含まれているため、PHP の教則に関心のある友人の助けになることを望みます。