Heim > Backend-Entwicklung > PHP-Tutorial > Wie speichere ich Remote-Bilder lokal in Laravel 5?

Wie speichere ich Remote-Bilder lokal in Laravel 5?

不言
Freigeben: 2023-03-01 06:36:02
Original
6425 Leute haben es durchsucht

Unterstützt das Dateisystem von Laravel dies (insbesondere Funktionen wie Kopieren)?

Wenn Sie file_get_contents verwenden und es sich um eine HTTPS-Website handelt, wird ein SSL-Überprüfungsfehler angezeigt, Sie können diesen Fehler jedoch nicht ignorieren.

Antwortinhalt:

Unterstützt das Dateisystem von Laravel dies (insbesondere Funktionen wie Kopieren)?
Wenn Sie file_get_contents verwenden und es sich um eine HTTPS-Website handelt, wird ein SSL-Überprüfungsfehler angezeigt, Sie können diesen Fehler jedoch nicht ignorieren.

Verwenden Sie einfach GuzzleHttp.
Hinzugefügt:

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

kann mit Try Catch geschrieben werden.

GuzzleHttp ruft Remote-Ressourcen ab. Storage befasst sich mit der Dateispeicherung.

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';
}
Nach dem Login kopieren
SSL证书验证失败的问题是以为你本地没有最新的ca证书列表,下载一个就行了
Nach dem Login kopieren
$client = new \GuzzleHttp\Client($url,[
    'curl.options' => [
        CURLOPT_SSL_VERIFYPEER=>2,
        CURLOPT_SSL_VERIFYHOST=true,
    ]
]);
Nach dem Login kopieren

Sie können es mit Curl tun

file_put_contents('/tmp/logo.gif',file_get_contents('https://www.baidu.com/img/bdlogo.gif'));
Nach dem Login kopieren

Solange Ihr PHP OpenSSL-Unterstützung hinzufügt (--with-openssl), unterstützt file_get_contents definitiv HTTPS .
Wenn eine Fehlermeldung angezeigt wird:
SSL-Vorgang mit Code 1 fehlgeschlagen. OpenSSL-Fehlermeldungen:
Fehler:14090086:SSL-Routinen:ssl3_get_server_certificate:Zertifikatsüberprüfung fehlgeschlagen
Laden Sie dann die Datei cacert.pem herunter und Führen Sie es dann in der angegebenen PHP-INI aus und starten Sie dann den PHP-Dienst neu:

wget https://curl.haxx.se/ca/cacert.pem
php.ini:
openssl.cafile=/path/to/cacert.pem

var_export(openssl_get_cert_locations());
array (
  'default_cert_file' => '/opt/phpdroid/deps/ssl/cert.pem',
  'default_cert_file_env' => 'SSL_CERT_FILE',
  'default_cert_dir' => '/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' => '',
)
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage