直接上代碼:
getFile("http://easyread.ph.126.net/N8gDl6ayo5wLgKbgT21NZQ==/7917056565549478184.jpg");
/**
* php實現下載遠程圖片保存到本地
**
* $url 圖片所在地址
* $path 保存圖片的路徑
* $filename 圖片自定義命名
* $type 使用什么方式下載
* 0:curl方式,1:readfile方式,2file_get_contents方式
*
* return 文件名
*/
function getFile($url,$path='',$filename='',$type=0){
if($url==''){return false;}
//獲取遠程文件數據
if($type===0){
$ch=curl_init();
$timeout=5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);//最長執行時間
curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);//最長等待時間
$img=curl_exec($ch);
curl_close($ch);
}
if($type===1){
ob_start();
readfile($url);
$img=ob_get_contents();
ob_end_clean();
}
if($type===2){
$img=file_get_contents($url);
}
//判斷下載的數據 是否為空 下載超時問題
if(empty($img)){
throw new \Exception("下載錯誤,無法獲取下載文件!");
}
//沒有指定路徑則默認當前路徑
if($path===''){
$path="./";
}
//如果命名為空
if($filename===""){
$filename=md5($img);
}
//獲取后綴名
$ext=substr($url, strrpos($url, '.'));
if($ext && strlen($ext)<5){
$filename.=$ext;
}
//防止"/"沒有添加
$path=rtrim($path,"/")."/";
//var_dump($path.$filename);die();
$fp2=@fopen($path.$filename,'a');
fwrite($fp2,$img);
fclose($fp2);
//echo "finish";
return $filename;
}
