Memuat turun Fail Imej melalui CURL PHP
Untuk mengambil dan menyimpan fail imej daripada URL, CURL PHP menawarkan penyelesaian yang mudah. Walau bagaimanapun, isu pengekodan tertentu boleh menghalang percubaan anda. Mari kita rungkai coretan kod ini:
function GetImageFromUrl($link) { $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_URL, $link); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch); return $result; } $sourcecode = GetImageFromUrl($iticon); $savefile = fopen(' /img/uploads/' . $iconfilename, 'w'); fwrite($savefile, $sourcecode); fclose($savefile);
Isu dan Penyelesaian:
Laluan Fail Salah:
Pernyataan menyimpan fail tidak betul mengandungi ruang (' ') dalam laluan. Gantikannya dengan:
$savefile = fopen('img/uploads/' . $iconfilename, 'w');
Kehilangan Fungsi:
Kod mengambil imej tetapi tidak mengambil kira data binari. Untuk memastikan penjimatan imej yang betul, tambah:
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
Menulis Ganti Fail Sedia Ada:
Kod tersebut menimpa mana-mana fail sedia ada dengan nama yang sama. Untuk mengelakkan perkara ini, gunakan:
if (file_exists($savefile)) { unlink($savefile); }
Kod Dioptimumkan:
function grab_image($url, $saveto) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); $raw = curl_exec($ch); curl_close($ch); if (file_exists($saveto)) { unlink($saveto); } $fp = fopen($saveto, 'x'); fwrite($fp, $raw); fclose($fp); }
Nota Tambahan :
Dalam fail konfigurasi PHP anda (php.ini), pastikan bahawa allow_url_fopen didayakan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Muat Turun dan Simpan Imej Dengan Cekap Menggunakan cURL dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!