thinkphp5保存遠程圖片到本地

代碼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時是不須要經過入口文件的,此時相對路徑則是相對於執行的類的目錄 。瀏覽器

相關文章
相關標籤/搜索