代碼php
protected function saveImg($imgUrl){
$ext=strrchr($imgUrl,'.');
if(!in_array($ext,['.jpg','.png','.jpeg','.gif']))
return $imgUrl;
$baseName=basename($imgUrl);
$saveUrl="/upload/img/".$baseName;
//文件保存絕對路徑
$path=__DIR__.DS.'../../../public/upload'.DS.$type.DS.$baseName;
$img = file_get_contents($imgUrl);
file_put_contents($path, $img);
return $saveUrl;
}
file_put_contents()方法最好使用絕對路徑,若是使用相對路徑,在某些狀況兩個路徑指向的目錄可能不是同一個,從而會報錯:failed to open stream: No such file or directory。thinkphp
好比說thinkphp5使用workerman爬文章並保存圖片時,當使用瀏覽器或postman經過入口文件測試,則相對路徑是相對於入口文件目錄,在workerman時是不須要經過入口文件的,此時相對路徑則是相對於執行的類的目錄 。瀏覽器