当前位置: 必赢官网 > 计算机编程 > 正文

php利用curl获取远程图片实现方法

时间:2019-08-05 11:19来源:计算机编程
PHP的CULANDL组件是非经常用的HTTP诉求模拟器。 CU君越L函数Curry最要害的函数是 curl_setopt() ,它能够经过设定CU福睿斯L函数库定义的选项来定制HTTP恳求 curl须求php情况帮助才行,可以运作

PHP的CULANDL组件是非经常用的HTTP诉求模拟器。

CU君越L函数Curry最要害的函数是curl_setopt(),它能够经过设定CU福睿斯L函数库定义的选项来定制HTTP恳求

curl须求php情况帮助才行,可以运作phpinfo()函数是或不是帮衬,一般要将php.ini中;extension=php_curl.dll前的;去掉,重新开动IIS只怕APACHE就能够了。
代码如下:

日常要发送post数据时,笔者曾经习认为常于那样写:
curl_setopt( $ch, CURLOPT_POSTFIELDS,$post_data);
但是在向某三个服务器发送需要的时候,服务器再次来到500。而选取socket格局连接上去发送央求,重临符合规律的数额。

选拔方式:
bool curl_setopt (int ch, string option, mixed value) 
curl_setopt()函数将为叁个CUEscortL会话设置选项。option参数是您想要的安装,value是那一个选项给定的值。  

/*
*@通过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;
}

品尝发送到贰个独有<?php print_r($_SEPRADOVE君越);?>的网页上,能够看出使用数组发送POST数据时,收到的CONTENT_TYPE如下:

下列选项的值将被作为长整形使用(在option参数中钦命):

调用时,直接getImg("/logo.jpg","upload/image.jpg")

 代码如下

CURLOPT_INFILESIZE: //当你上传三个文书到长途站点,那个选项告诉PHP你上传文件的分寸。

贯彻代码2
代码如下:

[CONTENT_TYPE] => multipart/form-data; boundary=—————————-f924413ea122
而使用http_build_query($post_data),收到的CONTENT_TYPE如下:
[CONTENT_TYPE] => application/x-www-form-urlencoded

CURLOPT_VERBOSE: //假设你想CU奥迪Q5L报告每一件意外的事体,设置这一个选项为二个非零值。

<?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;
}
?>

可见,当CURLOPT_POSTFIELDS被安装为数组时,HTTP头会发送Content_type: application/x-www-form-urlencoded。这几个是例行的网页<form>提交表单时,浏览器发送的尾部。而multipart/form-data我们清楚那是用于上传文件的表单。满含了boundary分界符,会多出广大字节。

CURLOPT_HEADER: //假诺你想把四个头包蕴在输出中,设置这一个选项为二个非零值。

curl_setopt 为CU大切诺基L调用设置三个精选
bool curl_setopt (int ch, string option, mixed value)
curl_setopt()函数将为一个CU酷路泽L会话设置选项。option参数是您想要的装置,value是以此选项给定的值。
下列选项的值将被当作长整形使用(在option参数中钦命):
**
CURLOPT_INFILESIZE: 当你上传五个文件到长途站点,那一个选项告诉PHP你上传文件的轻重缓急。 CURLOPT_VERBOSE: 假如您想CUHavalL报告每一件意外的事体,设置那几个选项为二个非零值。 CURLOPT_HEADER: 假设您想把贰个头满含在输出中,设置那些选项为一个非零值。 CURLOPT_NOPROGRESS: 假如你不会PHP为CU奥迪Q3L传输突显三个经过条,设置那几个选项为三个非零值。 注意:PHP自动安装那几个选项为非零值,你应该只是为了调治的指标来退换这几个选项。 CURLOPT_NOBODY: 假若您不想在出口中包括body部分,设置这几个选项为一个非零值。 CURLOPT_FAILONERROR: 如果你想让PHP在爆发错误(HTTP代码再次来到大于等于300)时,不出示,设置这一个选项为一人非零值。默许行为是重回贰个常规页,忽略代码。 CURLOPT_UPLOAD: 假若您想让PHP为上传做计划,设置这些选项为二个非零值。 CURLOPT_POST: 倘若你想PHP去做一个专门的学业的HTTP POST,设置那些选项为一个非零值。这几个POST是平常的 application/x-www-from-urlencoded 类型,相当多被HTML表单使用。 CURLOPT_FTPLISTONLY: 设置那些选项为非零值,PHP将列出FTP的目录名列表。 CURLOPT_FTPAPPEND: 设置那一个选项为一个非零值,PHP将应用远程文件替代覆盖它。 CURLOPT_NETRC: 设置这一个选项为一个非零值,PHP就要您的 ~./netrc 文件中探究你要赤贫如洗连接的中远距离站点的用户名及密码。 CURLOPT_FOLLOWLOCATION: 设置这一个选项为叁个非零值(象 “Location: “)的头,服务器会把它当做HTTP头的一某个发送(注意那是递归的,PHP将发送形如 “Location: “的头)。 CURLOPT_PUT: 设置那几个选项为贰个非零值去用HTTP上传三个文本。要上传那么些文件必须安装CUV8 VantageLOPT_INFILE和CURLOPT_INFILESIZE选项. CURLOPT_MUTE: 设置这些选项为三个非零值,PHP对于CU大切诺基L函数将完全沉默。 CURLOPT_TIMEOUT: 设置多个长整形数,作为最大再三再四多少秒。 CURLOPT_LOW_SPEED_LIMIT: 设置多少个长整形数,调整传送多少字节。 CURLOPT_LOW_SPEED_TIME: 设置八个长整形数,调控多少秒传送CU帕杰罗LOPT_LOW_SPEED_LIMIT规定的字节数。 CURLOPT_RESUME_FROM: 传递一个涵盖字节偏移地址的长整形参数,(你想更改成的初叶表单)。 CURLOPT_SSLVERSION: 传递一个分包SSL版本的长参数。暗中同意PHP将被它和睦拼命的鲜明,在越来越多的平安中你必须手工业安装。 CURLOPT_TIMECONDITION: 传递叁个长参数,内定怎么管理CUEnclaveLOPT_TIMEVALUE参数。你能够安装这几个参数为TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE。那仅用于HTTP。 CURLOPT_TIMEVALUE: 传递四个从1967-1-1方始到方今的秒数。这些日子将被CUWranglerLOPT_TIMEVALUE选项作为钦命值使用,或被暗中同意TIMECOND_IFMODSINCE使用。 下列选项的值将被当做字符串:
**CURLOPT_URL: 那是你想用PHP取回的U中华VL地址。你也得以在用curl_init()函数开首化时设置这几个选项。
CURLOPT_USERPWD: 传递三个形如[username]:[password]风格的字符串,效率PHP去老是。
CURLOPT_PROXYUSERPWD: 传递多少个形如[username]:[password] 格式的字符串去老是HTTP代理。
CURLOPT_RANGE: 传递一个你想内定的限制。它应有是”X-Y”格式,X或Y是被除此而外的。HTTP传送同样帮助多少个区间,用逗句来分隔(X-Y,N-M)。
CURLOPT_POSTFIELDS: 传递二个看作HTTP “POST”操作的富有数据的字符串。
CURLOPT_REFERER: 在HTTP央求中包罗一个”referer”头的字符串。
CURLOPT_USERAGENT: 在HTTP要求中涵盖二个”user-agent”头的字符串。
CURLOPT_FTPPORT: 传递二个暗含被ftp “POST”指令使用的IP地址。那个POST指令告诉远程服务器去老是我们内定的IP地址。 那个字符串能够是三个IP地址,贰个主机名,贰个互联网分界面名(在UNIX下),或是‘-'(使用系统暗中同意IP地址)。
CURLOPT_COOKIE: 传递四个包罗HTTP cookie的头三番五次。
CURLOPT_SSLCERT: 传递一个包括PEM格式证书的字符串。
CURLOPT_SSLCERTPASSWD: 传递二个满含使用CUKugaLOPT_SSLCERT证书必需的密码。
CURLOPT_COOKIEFILE: 传递三个涵盖cookie数据的公文的名字的字符串。这几个cookie文件可以是Netscape格式,或是堆存在文件中的HTTP风格的头。
CURLOPT_CUSTOMREQUEST: 当进行HTTP央求时,传递一个字符被GET或HEAD使用。

手册上关系:

CURLOPT_NOPROGRESS: //假设你不会PHP为CU卡宴L传输展现三个进程条,设置那个选项为八个非零值。
瞩目:PHP自动安装那么些选项为非零值,你应有唯有为了调节和测量试验的指标来改造那一个选项。

以上正是php利用curl获取远程图片完结格局,希望对我们的就学抱有援助。

The full data to post in a HTTP “POST” operation. To post a file, prepend a filename with @ and use the full path. This can either be passed as a urlencoded string like ‘para1=val1¶2=val2&…’ or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data.

CURLOPT_NOBODY: //假令你不想在出口中满含body部分,设置那么些选项为三个非零值。

您可能感兴趣的文章:

  • PHP使用curl模拟post上传及接收文件的法子
  • php curl 上传文件代码实例
  • PHP基于CUEscortL举行POST数据上传实例
  • php达成curl模拟ftp上传的不二秘诀
  • php curl上传、下载、https登入实现代码
  • 浅析PHP7新功用及语法变化总括
  • 争论 PHP7新添效果与利益
  • PHP通过CUMuranoL完毕定时职务的图形抓取成效示例
  • php获取远程图片的三种CUKoleosL格局和sockets格局猎取远程图片
  • PHP7基于curl达成的上传图片成效

应用数组提供post数据时,CUENVISIONL组件差不离是为着协作@filename这种上传文件的写法,暗中认可把content_type设为了multipart/form-data。即使对于大大多web服务器并从未影响,可是依然有少部分服务器不包容。

CURLOPT_FAILONERROR: //倘使你想让PHP在产生错误(HTTP代码再次回到大于等于300)时,不彰显,设置那些选项为一位非零值。默许行为是回去叁个常规页,忽略代码。

本文得出的下结论是,在并未有索要上传文件的情状下,尽量对post提交的数码进行http_build_query,然后发送出去,能促成越来越好的包容性,更加小的呼吁数据包。

CURLOPT_UPLOAD: //倘令你想让PHP为上传做图谋,设置这么些选项为二个非零值。

下列选项的值将被视作长整形使用(在option参数中内定):

CURLOPT_POST: //倘使你想PHP去做一个标准的HTTP POST,设置那么些选项为三个非零值。那么些POST是常见的 application/x-www-from-urlencoded 类型,大多被HTML表单使用

   
•    CURLOPT_INFILESIZE : 当你上传二个文书到长途站点,那几个选项告诉PHP你上传文件的深浅。
•    CURLOPT_VE汉兰达爱科技 : 假诺您想CU奥迪Q5L报告每一件意外的专门的学问,设置那一个选项为三个非零值。
•    CURLOPT_HEADEEscort : 要是你想把一个头包涵在输出中,设置那么些选项为八个非零值。
•    CURLOPT_NOPROGRESS: 借使您不会PHP为CU途达L传输展现叁个过程条,设置那一个选项为一个非零值。注意:PHP自动安装这几个选项为非零值,你应该仅仅为了调试的指标来退换那几个选项。
•    CURLOPT_NOBODY : 假若您不想在出口中涵盖body部分,设置那一个选项为三个非零值。
•    CURLOPT_FAILONELANDROHaval : 如果你想让PHP在产生错误(HTTP代码重临大于等于300)时,不显示,设置这些选项为一个人非零值。默许行为是回到叁个好端端页,忽略代码。
•    CURLOPT_UPLOAD: 如若您想让PHP为上传做准备,设置那一个选项为三个非零值。
•    CURLOPT_POST : 要是你想PHP去做三个行业内部的HTTP POST,设置这几个选项为一个非零值。那几个POST是惯常的 application/x-www-from-urlencoded 类型,许多被HTML表单使用。
•    CURLOPT_FTPLISTONLY : 设置这几个选项为非零值,PHP将列出FTP的目录名列表。
•    CURLOPT_FTPAPPEND : 设置那几个选项为三个非零值,PHP将利用远程文件代替覆盖它。
•    CURLOPT_NETRC : 设置这几个选项为一个非零值,PHP就要你的 ~./netrc 文件中寻觅你要创造连接的中距离站点的用户名及密码。
•    CURLOPT_FOLLOWLOCATION : 设置那个选项为一个非零值(象 “Location: “)的头,服务器会把它看作HTTP头的一局地发送(注意那是递归的,PHP将发送形如 “Location: “的头)。
•    CURLOPT_PUT : 设置这么些选项为贰个非零值去用HTTP上传三个文书。要上传那些文件必须设置CURubiconLOPT_INFILE和CURLOPT_INFILESIZE选项.
•    CURLOPT_MUTE : 设置这几个选项为一个非零值,PHP对于CU哈弗L函数将完全沉默。
•    CURLOPT_TIMEOUT : 设置四个长整形数,作为最大三番一次多少秒。
•    CURLOPT_LOW_SPEED_LIMIT: 设置八个长整形数,调控传送多少字节。
•    CURLOPT_LOW_SPEED_TIME : 设置两个长整形数,调控多少秒传送CU福特ExplorerLOPT_LOW_SPEED_LIMIT规定的字节数。
•    CURLOPT_RESUME_FROM : 传递贰个包含字节偏移地址的长整形参数,(你想更改来的开端表单)。
•    CURLOPT_SSLVE奥迪Q3SION: 传递多个含有SSL版本的长参数。暗许PHP将被它和谐努力的规定,在越来越多的平安中您无法不手工业安装。
•    CURLOPT_TIMECONDITION : 传递叁个长参数,钦定怎么管理CUPAJEROLOPT_TIMEVALUE参数。你能够设置那一个参数为TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE。那仅用于HTTP。
•    CURLOPT_TIMEVALUE : 传递贰个从一九六六-1-1开始到明天的秒数。这一个日子将被CUOdysseyLOPT_TIMEVALUE选项作为钦点值使用,或被暗中同意TIMECOND_IFMODSINCE使用。

CURLOPT_FTPLISTONLY: //设置那一个选项为非零值,PHP将列出FTP的目录名列表。

下列选项的值将被视作字符串:

CURLOPT_FTPAPPEND: //设置那几个选项为贰个非零值,PHP将运用远程文件替代覆盖它。

•    CURLOPT_U奥迪Q5L: 那是您想用PHP取回的U中华VL地址。你也能够在用curl_init()函数开端化时设置那个选项。
•    CURLOPT_USERPWD : 传递二个形如[username]:[password]作风的字符串,作用PHP去老是。
•    CURLOPT_PROXYUSERPWD : 传递三个形如[username]:[password] 格式的字符串去老是HTTP代理。
•    CURLOPT_RANGE : 传递多少个您想内定的限量。它应当是”X-Y”格式,X或Y是被除却的。HTTP传送一样援助多少个区间,用逗句来分隔(X-Y,N-M)。
•    CURLOPT_POSTFIELDS : 传递二个看作HTTP “POST”操作的享有数据的字符串。
•    CURLOPT_REFERE奥迪Q5: 在HTTP央求中包罗多个”referer”头的字符串。
•    CURLOPT_USERAGENT : 在HTTP诉求中蕴藏一个”user-agent”头的字符串。
•    CURLOPT_FTPPORT: 传递一个包罗被ftp “POST”指令使用的IP地址。那一个POST指令告诉远程服务器去老是我们钦定的IP地址。那几个字符串能够是一个IP地址,七个主机名,多个网络分界面名(在UNIX下),或是‘-’(使用系统暗中同意IP地址)。
•    CURLOPT_CEOKIE : 传递四个饱含HTTP cookie的头一而再。
•    CURLOPT_SSLCERT : 传递两个满含PEM格式证书的字符串。
•    CURLOPT_SSLCERTPASSWD : 传递贰个包蕴使用CU安德拉LOPT_SSLCERT证书必需的密码。
•    CURLOPT_CEOKIEFILE : 传递八个分包cookie数据的公文的名字的字符串。那么些cookie文件能够是Netscape格式,或是堆存在文件中的HTTP风格的头。
•    CURLOPT_CUSTOMREQUEST : 当实行HTTP乞求时,传递三个字符被GET或HEAD使用。为举行DELETE或其余操作是方便的,更Pass a string to be used instead of GET or HEAD when doing an HTTP request. This is useful for doing or another, more obscure, HTTP request. 注意: 在肯定你的服务器帮助命令先不要去这样做。下列的精选供给四个文书呈报(通过利用fopen()函数获得):
•    CURLOPT_FILE: 这几个文件将是您放置传送的出口文件,暗许是STDOUT.
•    CURLOPT_INFILE : 那一个文件是你传送过来的输入文件。
•    CURLOPT_W奥迪Q7ITEHEADE福睿斯 : 这么些文件写有你输出的底部分。
•    CURLOPT_STDE牧马人PRADO : 那些文件写有错误实际不是stderr。用来获得供给报到的页面包车型大巴例子,当前做法是历次大概都登陆一遍,有要求的人再做革新了.

CURLOPT_NETRC: //设置那一个选项为三个非零值,PHP将要你的 ~./netrc 文件中探究你要确立连接的远程站点的用户名及密码。

代码学堂php

CURLOPT_FOLLOWLOCATION: //设置这一个选项为二个非零值(象 'Location: ')的头,服务器会把它看作HTTP头的一某些发送(注意那是递归的,PHP将发送形如 'Location: '的头)。

CURLOPT_PUT: //设置这么些选项为八个非零值去用HTTP上传一个文书。要上传这些文件必须设置CURAV4LOPT_INFILE和CURLOPT_INFILESIZE选项.

CURLOPT_MUTE: //设置那么些选项为一个非零值,PHP对于CUXC60L函数将完全沉默。
CURLOPT_TIMEOUT: //设置贰个长整形数,作为最大一而再多少秒。
CURLOPT_LOW_SPEED_LIMIT: //安装四个长整形数,调控传送多少字节。
CURLOPT_LOW_SPEED_TIME: //设置二个长整形数,调控多少秒传送CU奥迪Q3LOPT_LOW_SPEED_LIMIT规定的字节数。

CURLOPT_RESUME_FROM: //传递贰个富含字节偏移地址的长整形参数,(你想改变来的开首表单)。

CURLOPT_SSLVERSION: //传递多少个涵盖SSL版本的长参数。私下认可PHP将被它自己拼命的明确,在更加的多的平安中你无法不手工业安装。

CURLOPT_TIMECONDITION: //传送二个长参数,钦点怎么管理CU奥迪Q3LOPT_TIMEVALUE参数。你能够设置那些参数为TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE。那仅用于HTTP。

CURLOPT_TIMEVALUE: //传递一个从1966-1-1开头到前几天的秒数。这些时刻将被CUXC90LOPT_TIMEVALUE选项作为钦点值使用,或被私下认可TIMECOND_IFMODSINCE使用。

下列选项的值将被作为字符串:

CURLOPT_URL: //那是您想用PHP取回的UTucsonL地址。你也得以在用curl_init()函数先导化时设置这么些选项。

CURLOPT_USERPWD: //传递三个形如[username]:[password]风格的字符串,成效PHP去老是。

CURLOPT_PROXYUSERPWD: //传递多少个形如[username]:[password] 格式的字符串去老是HTTP代理。

CURLOPT_RANGE: //传递一个你想钦命的限量。它应有是'X-Y'格式,X或Y是被除却的。HTTP传送同样支持多少个区间,用逗句来分隔(X-Y,N-M)。

CURLOPT_POSTFIELDS: //传递一个看作HTTP “POST”操作的装有数据的字符串。

CURLOPT_REFERER: //在HTTP央求中隐含八个'referer'头的字符串。

CURLOPT_USERAGENT: //在HTTP乞请中富含三个'user-agent'头的字符串。

CURLOPT_FTPPORT: //传递三个涵盖被ftp 'POST'指令使用的IP地址。这几个POST指令告诉远程服务器去老是大家钦命的IP地址。 这么些字符串可以是二个IP地址,二个主机名,一个互连网分界面名(在UNIX下),或是‘-'(使用系统暗许IP地址)。

CURLOPT_COOKIE: //传递一个暗含HTTP cookie的头一连。

CURLOPT_SSLCERT: //传递二个带有PEM格式证书的字符串。

CURLOPT_SSLCERTPASSWD: //传递三个包蕴使用CULacrosseLOPT_SSLCERT证书必需的密码。

CURLOPT_COOKIEFILE: //传递两个涵盖cookie数据的公文的名字的字符串。那几个cookie文件能够是Netscape格式,或是堆存在文件中的HTTP风格的头。

CURLOPT_CUSTOMREQUEST: //当实行HTTP央求时,传递三个字符被GET或HEAD使用。为举行DELETE或别的操作是便于的

注意: 在认同你的服务器辅助命令先不要去这么做。

下列的选拔供给三个文本叙述(通过行使fopen()函数获得):

CURLOPT_FILE: //这么些文件将是你放置传送的出口文件,暗中认可是STDOUT.

CURLOPT_INFILE: //本条文件是你传送过来的输入文件。

CURLOPT_WRITEHEADER: //以此文件写有你输出的尾部分。

CURLOPT_STDERR:// 其一文件写有错误实际不是stderr。

 

 

编辑:计算机编程 本文来源:php利用curl获取远程图片实现方法

关键词: 必赢官网