Rumah > pembangunan bahagian belakang > masalah PHP > Menggunakan php untuk memuat turun imej rangkaian tidak dipaparkan

Menggunakan php untuk memuat turun imej rangkaian tidak dipaparkan

WBOY
Lepaskan: 2023-05-06 17:27:08
asal
782 orang telah melayarinya

Dengan perkembangan berterusan era Internet, gambar telah menjadi elemen yang sangat diperlukan dalam kehidupan moden. Dalam pembangunan laman web, kita selalunya perlu menggunakan PHP untuk memuat turun imej dari Internet dan memaparkannya pada halaman. Walau bagaimanapun, kadangkala apabila menggunakan PHP untuk memuat turun imej rangkaian, anda mungkin menghadapi situasi di mana imej tidak dapat dipaparkan. Artikel ini akan membincangkan dan menyelesaikan masalah ini.

1. Kaedah memuat turun imej daripada Internet

PHP menyediakan pelbagai cara untuk memuat turun imej daripada Internet:

1 fungsi curl untuk memuat turun imej

curl ialah perpustakaan sumber terbuka yang berkuasa yang menyokong berbilang protokol dan boleh menyelesaikan pelbagai operasi rangkaian, termasuk memuat turun fail. Kod untuk menggunakan fungsi curl untuk memuat turun imej adalah seperti berikut:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
curl_close($ch);
Salin selepas log masuk

Antaranya, $url mewakili alamat pautan imej yang akan dimuat turun. Gunakan fungsi curl_setopt untuk menetapkan parameter yang biasa digunakan ialah:

  • CURLOPT_RETURNTRANSFER: Tetapkan kepada 1 untuk menyimpan hasil yang dikembalikan kepada pembolehubah $data.
  • CURLOPT_HEADER: Tetapkan kepada 0 untuk tidak mengembalikan maklumat pengepala.
  • CURLOPT_FOLLOWLOCATION: Tetapkan kepada 1 untuk menyokong ubah hala.

Kod ini akan menyimpan kandungan fail ke dalam pembolehubah $data. Jika anda ingin menyimpan fail secara setempat, anda boleh menggunakan fungsi file_put_contents:

file_put_contents($path, $data);
Salin selepas log masuk

di mana $path mewakili laluan untuk menyimpan fail.

2. Gunakan fungsi file_get_contents untuk memuat turun imej

Selain menggunakan fungsi curl, anda juga boleh menggunakan fungsi file_get_contents terbina dalam PHP untuk memuat turun imej. Berbanding dengan fungsi curl, fungsi file_get_contents lebih mudah digunakan.

$data = file_get_contents($url);
Salin selepas log masuk

Kod ini akan membaca kandungan URL yang ditentukan ke dalam pembolehubah $data. Jika anda ingin menyimpan ke fail setempat, anda boleh menggunakan fungsi file_put_contents, yang sama seperti menggunakan fungsi curl.

2. Sebab dan penyelesaian mengapa imej tidak dapat dipaparkan

Apabila anda menggunakan PHP untuk memuat turun imej rangkaian dan memaparkannya pada halaman, anda mungkin mendapati bahawa imej tidak dapat dipaparkan seperti biasa. Berikut adalah ringkasan kemungkinan sebab dan penyelesaian untuk situasi ini.

1. Muat turun gambar tidak lengkap

Kadangkala gambar yang dimuat turun mungkin tidak dimuat turun sepenuhnya atas sebab rangkaian, mengakibatkan kegagalan untuk dipaparkan dengan betul. Anda boleh menentukan sama ada muat turun selesai dengan membandingkan saiz fail setempat dan saiz fail sebenar Berikut ialah contoh kod:

$data = curl_exec($ch); // 使用 curl 函数下载文件
$content_length = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); // 获取文件大小
curl_close($ch);

if(strlen($data) != $content_length){ // 判断文件大小与下载大小是否一致
    exit("下载的文件不完整!");
}
Salin selepas log masuk

2 Format imej tidak betul

Kadang-kadang, imej rangkaian yang dimuat turun mungkin tidak Format imej yang betul tidak akan dipaparkan dengan betul pada masa ini. Anda boleh menggunakan fungsi getimagesize terbina dalam PHP untuk menentukan sama ada imej itu betul.

if(@!getimagesize($path)){ // 判断图片是否正确
    unlink($path); // 删除下载的图片
    exit("下载的不是图片文件!");
}
Salin selepas log masuk

3. Laluan imej tidak betul

Apabila laluan imej tidak betul, imej tidak akan dipaparkan dengan betul. Pada masa ini, anda perlu menyemak sama ada laluan imej adalah betul, termasuk nama fail, laluan fail, dsb.

4. Masalah cache penyemak imbas

Kadangkala, walaupun imej telah dimuat turun dan disimpan secara setempat, penyemak imbas masih tidak dapat memaparkan imej seperti biasa. Anda boleh cuba mengosongkan cache penyemak imbas atau menambah parameter rawak selepas pautan imej untuk mengelakkan isu caching.

<img src="http://example.com/image.jpg?<?php echo time(); ?>" alt="image">
Salin selepas log masuk

Di atas adalah mengenai penyelesaian kepada masalah bahawa imej rangkaian tidak dapat dipaparkan selepas memuat turunnya menggunakan PHP. Saya harap ia dapat membantu semua orang.

Atas ialah kandungan terperinci Menggunakan php untuk memuat turun imej rangkaian tidak dipaparkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan