thinkphp5保存遠程圖片到本地


代碼

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。

比如說thinkphp5使用workerman爬文章並保存圖片時,當使用瀏覽器或postman通過入口文件測試,則相對路徑是相對於入口文件目錄,在workerman時是不需要通過入口文件的,此時相對路徑則是相對於執行的類的目錄 。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM