Laravel 5 怎麼保存遠端圖片到本地?

不言
發布: 2023-03-01 06:36:02
原創
6367 人瀏覽過

Laravel的FileSystem是否支援這樣做(尤其是copy等函數)?

file_get_contents的話,如果是HTTPS網站會遇到SSL驗證失敗的錯誤,但又不能忽略掉這個錯誤。

回覆內容:

Laravel的FileSystem是否支援這樣做(尤其是copy等函數)?
file_get_contents的話,如果是HTTPS網站會遇到SSL驗證失敗的錯誤,但又不能忽略掉這個錯誤。

用GuzzleHttp即可。
加上:

use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
登入後複製
$client = new Client(['verify' => false]);  //忽略SSL错误
$response = $client->get($url, ['save_to' => public_path($file)]);  //保存远程url到文件
登入後複製

可以用try catch寫。

GuzzleHttp取得遠端資源。 Storage處理檔案儲存。

try {
    $client = new \GuzzleHttp\Client();
    $data = $client->request('get','http://xxxx')->getBody()->getContents();
    Storage::disk('local')->put('filename', $data);
} catch (\GuzzleHttp\RequestException $e) {
    echo 'fetch fail';
}
登入後複製
SSL证书验证失败的问题是以为你本地没有最新的ca证书列表,下载一个就行了
登入後複製
$client = new \GuzzleHttp\Client($url,[
    'curl.options' => [
        CURLOPT_SSL_VERIFYPEER=>2,
        CURLOPT_SSL_VERIFYHOST=true,
    ]
]);
登入後複製

用curl可以搞定

file_put_contents('/tmp/logo.gif',file_get_contents('https://www.baidu.com/img/bdlogo.gif'));
登入後複製

只要你的PHP添加了OpenSSL支援(--with-openssl),那file_get_contents就肯定支援HTTPS的.
oper如果提示出錯Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
那就下載cacert.pem檔,然後在php.ini指定,然後重啟PHPrrre:

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!