• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Laravel 5 怎么保存远程图片到本地?

php 搞代码 3年前 (2022-01-22) 17次浏览 已收录 0个评论
文章目录[隐藏]

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的.
如果提示出错:
SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
那就下载cacert.pem文件,然后在php.ini指定,然后重启PHP服务就好:

wget https://curl.haxx.se/ca/cacert.pemphp.ini:openssl.cafile=/path/to/cacert.pemvar_export(openssl_get_cert_locations());array (  'default_cert_file' => '/opt/phpdroid/deps/ssl/cert.pem',  'default_cert_file_env' => 'SSL_CERT_FILE',  'default_cert_di<p style="color:transparent">本文来源gao!%daima.com搞$代*!码$网3</p><strong>搞代gaodaima码</strong>r' => '/opt/phpdroid/deps/ssl/certs',  'default_cert_dir_env' => 'SSL_CERT_DIR',  'default_private_dir' => '/opt/phpdroid/deps/ssl/private',  'default_default_cert_area' => '/opt/phpdroid/deps/ssl',  'ini_cafile' => '',  'ini_capath' => '',)

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Laravel 5 怎么保存远程图片到本地?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址