Rumah > Artikel > hujung hadapan web > PHP menggunakan curl untuk mendapatkan kemahiran pelaksanaan kaedah_javascript imej jauh
curl memerlukan sokongan persekitaran PHP Anda boleh menjalankan fungsi phpinfo() untuk melihat sama ada ia disokong Secara amnya, anda perlu mengalih keluar ";" di hadapan "extension=php_curl.dll" dalam php.ini dan mulakan semula IIS atau APACHE.
Kodnya adalah seperti berikut:
/* *@通过curl方式获取指定的图片到本地 *@ 完整的图片地址 *@ 要存储的文件名 */ function getImg($url = "", $filename = "") { //去除URL连接上面可能的引号 //$url = preg_replace( '/(?:^['"]+|['"/]+$)/', '', $url ); $hander = curl_init(); $fp = fopen($filename,'wb'); curl_setopt($hander,CURLOPT_URL,$url); curl_setopt($hander,CURLOPT_FILE,$fp); curl_setopt($hander,CURLOPT_HEADER,0); curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1); //curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来 curl_setopt($hander,CURLOPT_TIMEOUT,60); curl_exec($hander); curl_close($hander); fclose($fp); Return true; }
Apabila membuat panggilan, terus getImg("/logo.jpg", "upload/image.jpg")
Kod pelaksanaan 2
Kodnya adalah seperti berikut:
<?php $url = "图片绝对地址/thumbnail.jpg"; $filename = 'curl.jpg'; getImg($url, $filename); /* *@通过curl方式获取制定的图片到本地 *@ 完整的图片地址 *@ 要存储的文件名 */ function getImg($url = "", $filename = "") { if(is_dir(basename($filename))) { echo "The Dir was not exits"; return false; } //去除URL连接上面可能的引号 $url = preg_replace( '/(?:^['"]+|['"/]+$)/', '', $url ); $hander = curl_init(); $fp = fopen($filename,'wb'); curl_setopt($hander,CURLOPT_URL,$url); curl_setopt($hander,CURLOPT_FILE,$fp); curl_setopt($hander,CURLOPT_HEADER,0); curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1); //curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来 curl_setopt($hander,CURLOPT_TIMEOUT,60); /*$options = array( CURLOPT_URL=> '/thum-f3ccdd27d2000e3f9255a7e3e2c4880020110622095243.jpg', CURLOPT_FILE => $fp, CURLOPT_HEADER => 0, CURLOPT_FOLLOWLOCATION => 1, CURLOPT_TIMEOUT => 60 ); curl_setopt_array($hander, $options); */ curl_exec($hander); curl_close($hander); fclose($fp); return true; } ?>
curl_setopt menetapkan pilihan untuk panggilan CURL
bool curl_setopt (int ch, pilihan rentetan, nilai bercampur)
Fungsi curl_setopt() akan menetapkan pilihan untuk sesi CURL. Parameter pilihan ialah tetapan yang anda inginkan dan nilai ialah nilai yang diberikan oleh pilihan ini.
Nilai pilihan berikut akan digunakan sebagai integer panjang (dinyatakan dalam parameter pilihan):
CURLOPT_INFILESIZE: Apabila anda memuat naik fail ke tapak jauh, pilihan ini memberitahu PHP saiz fail yang anda muat naik.
CURLOPT_VERBOSE: Jika anda mahu CURL melaporkan setiap peristiwa yang tidak dijangka, tetapkan pilihan ini kepada nilai bukan sifar.
CURLOPT_HEADER: Jika anda ingin memasukkan pengepala dalam output, tetapkan pilihan ini kepada nilai bukan sifar.
CURLOPT_NOPROGRESS: Jika anda tidak mahu PHP memaparkan bar kemajuan untuk pemindahan CURL, tetapkan pilihan ini kepada nilai bukan sifar.
Nota: PHP secara automatik menetapkan pilihan ini kepada nilai bukan sifar, anda hanya perlu menukar pilihan ini untuk tujuan nyahpepijat.
CURLOPT_NOBODY: Jika anda tidak mahu memasukkan bahagian badan dalam output, tetapkan pilihan ini kepada nilai bukan sifar.
CURLOPT_FAILONERROR: Jika anda mahu PHP tidak dipaparkan apabila ralat berlaku (kod HTTP kembali lebih besar daripada atau sama dengan 300), tetapkan pilihan ini kepada nilai bukan sifar. Tingkah laku lalai adalah untuk mengembalikan halaman biasa dan mengabaikan kod.
CURLOPT_UPLOAD: Jika anda mahu PHP bersedia untuk memuat naik, tetapkan pilihan ini kepada nilai bukan sifar.
CURLOPT_POST: Jika anda mahu PHP melakukan HTTP POST biasa, tetapkan pilihan ini kepada nilai bukan sifar. POST ini adalah daripada jenis aplikasi biasa/x-www-from-urlencoded, kebanyakannya digunakan oleh borang HTML.
CURLOPT_FTPLISTONLY: Tetapkan pilihan ini kepada nilai bukan sifar dan PHP akan menyenaraikan nama direktori untuk FTP.
CURLOPT_FTPAPPEND: Tetapkan pilihan ini kepada nilai bukan sifar dan PHP akan menggunakan fail jauh dan bukannya menimpanya.
CURLOPT_NETRC: Tetapkan pilihan ini kepada nilai bukan sifar dan PHP akan melihat dalam fail ~./netrc anda untuk nama pengguna dan kata laluan tapak jauh yang anda ingin sambungkan.
CURLOPT_FOLLOWLOCATION: Tetapkan pilihan ini kepada nilai bukan sifar (seperti pengepala "Lokasi: "), pelayan akan menghantarnya sebagai sebahagian daripada pengepala HTTP (perhatikan bahawa ini adalah rekursif, PHP Tajuk borang "Lokasi: " akan dihantar).
CURLOPT_PUT: Tetapkan pilihan ini kepada nilai bukan sifar untuk memuat naik fail menggunakan HTTP. Untuk memuat naik fail ini, anda mesti menetapkan pilihan CURLOPT_INFILE dan CURLOPT_INFILESIZE.
CURLOPT_MUTE: Tetapkan pilihan ini kepada nilai bukan sifar dan PHP akan senyap sepenuhnya untuk fungsi CURL.
CURLOPT_TIMEOUT: Tetapkan integer panjang sebagai bilangan maksimum saat.
CURLOPT_LOW_SPEED_LIMIT: Tetapkan integer panjang untuk mengawal bilangan bait yang dihantar.
CURLOPT_LOW_SPEED_TIME: Tetapkan integer panjang untuk mengawal berapa saat untuk menghantar bilangan bait yang ditentukan oleh CURLOPT_LOW_SPEED_LIMIT.
CURLOPT_RESUME_FROM: Lulus parameter panjang yang mengandungi alamat offset bait, (borang mula yang anda ingin pindahkan).
CURLOPT_SSLVERSION: Lulus parameter panjang yang mengandungi versi SSL. Secara lalai PHP akan ditentukan oleh usahanya sendiri, dalam lebih keselamatan anda perlu menetapkannya secara manual.
CURLOPT_TIMECONDITIHIDUP: Lulus parameter panjang untuk menentukan cara mengendalikan parameter CURLOPT_TIMEVALUE. Anda boleh menetapkan parameter ini kepada TIMECOND_IFMODSINCE atau TIMECOND_ISUNMODSINCE. Ini hanya untuk HTTP.
CURLOPT_TIMEVALUE: Lulus beberapa saat dari 1970-1-1 hingga sekarang. Masa ini akan digunakan sebagai nilai yang ditentukan oleh pilihan CURLOPT_TIMEVALUE atau secara lalai TIMECOND_IFMODSINCE.
Nilai pilihan berikut akan dianggap sebagai rentetan:
CURLOPT_URL: Ini ialah alamat URL yang anda mahu dapatkan semula menggunakan PHP. Anda juga boleh menetapkan pilihan ini semasa pemulaan dengan fungsi curl_init().
CURLOPT_USERPWD: Lulus rentetan dalam bentuk [nama pengguna]:[kata laluan] dan gunakan PHP untuk menyambung.
CURLOPT_PROXYUSERPWD: Hantar rentetan dalam format [nama pengguna]:[kata laluan] untuk menyambung ke proksi HTTP.
CURLOPT_RANGE: Lulus julat yang anda mahu tentukan. Ia hendaklah dalam format "X-Y", dengan X atau Y dikecualikan. Pemindahan HTTP juga menyokong beberapa selang, dipisahkan dengan koma (X-Y,N-M).
CURLOPT_POSTFIELDS: Lepasi rentetan yang mengandungi semua data sebagai operasi "POST" HTTP.
CURLOPT_REFERER: Rentetan yang mengandungi pengepala "perujuk" dalam permintaan HTTP.
CURLOPT_USERAGENT: Rentetan yang mengandungi pengepala "user-agent" dalam permintaan HTTP.
CURLOPT_FTPPORT: Lulus alamat IP yang mengandungi alamat IP yang digunakan oleh perintah ftp "POST". Perintah POST ini memberitahu pelayan jauh untuk menyambung ke alamat IP yang kami tentukan. Rentetan ini boleh menjadi alamat IP, nama hos, nama antara muka rangkaian (di bawah UNIX), atau '-' (gunakan alamat IP lalai sistem).
CURLOPT_COOKIE: Luluskan pengepala sambungan yang mengandungi kuki HTTP.
CURLOPT_SSLCERT: Lulus rentetan yang mengandungi sijil dalam format PEM.
CURLOPT_SSLCERTPASSWD: Lulus kata laluan yang mengandungi kata laluan yang diperlukan untuk menggunakan sijil CURLOPT_SSLCERT.
CURLOPT_COOKIEFILE: Lulus rentetan yang mengandungi nama fail yang mengandungi data kuki. Fail kuki ini boleh dalam format Netscape, atau ia boleh menjadi timbunan pengepala gaya HTTP yang disimpan dalam fail.
CURLOPT_CUSTOMREQUEST: Apabila membuat permintaan HTTP, hantar aksara untuk digunakan oleh GET atau HEAD.
Di atas ialah cara PHP menggunakan curl untuk mendapatkan imej jauh saya harap ia akan membantu pembelajaran semua orang.