curl은 PHP 환경 지원이 필요합니다. phpinfo() 함수를 실행하여 지원 여부를 확인할 수 있습니다. 일반적으로 php.ini에서 "extension=php_curl.dll" 앞에 있는 ";"을 제거하고 다시 시작해야 합니다. IIS 또는 아파치.
코드는 다음과 같습니다.
/* *@通过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; }
호출시 직접 getImg("/logo.jpg", "upload/image.jpg")
구현 코드 2
코드는 다음과 같습니다.
<?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는 CURL 호출에 대한 옵션을 설정합니다
bool cur_setopt (int ch, 문자열 옵션, 혼합 값)
컬_setopt() 함수는 CURL 세션에 대한 옵션을 설정합니다. option 매개변수는 원하는 설정이고 value는 이 옵션에서 제공하는 값입니다.
다음 옵션의 값은 긴 정수로 사용됩니다(옵션 매개변수에 지정).
CURLOPT_INFILESIZE: 원격 사이트에 파일을 업로드할 때 이 옵션은 업로드한 파일의 크기를 PHP에 알려줍니다.
CURLOPT_VERBOSE: CURL이 예상치 못한 모든 이벤트를 보고하도록 하려면 이 옵션을 0이 아닌 값으로 설정하세요.
CURLOPT_HEADER: 출력에 헤더를 포함하려면 이 옵션을 0이 아닌 값으로 설정하세요.
CURLOPT_NOPROGRESS: PHP가 CURL 전송에 대한 진행률 표시줄을 표시하지 않도록 하려면 이 옵션을 0이 아닌 값으로 설정하세요.
참고: PHP는 자동으로 이 옵션을 0이 아닌 값으로 설정하므로 디버깅 목적으로만 이 옵션을 변경해야 합니다.
CURLOPT_NOBODY: 출력에 본문 부분을 포함하지 않으려면 이 옵션을 0이 아닌 값으로 설정하세요.
CURLOPT_FAILONERROR: 오류가 발생할 때(HTTP 코드가 300보다 크거나 같은 반환) PHP가 표시되지 않도록 하려면 이 옵션을 0이 아닌 값으로 설정하세요. 기본 동작은 일반 페이지를 반환하고 코드를 무시하는 것입니다.
CURLOPT_UPLOAD: PHP가 업로드를 준비하도록 하려면 이 옵션을 0이 아닌 값으로 설정하세요.
CURLOPT_POST: PHP가 일반 HTTP POST를 수행하도록 하려면 이 옵션을 0이 아닌 값으로 설정하세요. 이 POST는 주로 HTML 양식에서 사용되는 일반 application/x-www-from-urlencoded 유형입니다.
CURLOPT_FTPLISTONLY: 이 옵션을 0이 아닌 값으로 설정하면 PHP가 FTP의 디렉터리 이름을 나열합니다.
CURLOPT_FTPAPPEND: 이 옵션을 0이 아닌 값으로 설정하면 PHP는 원격 파일을 덮어쓰는 대신 적용합니다.
CURLOPT_NETRC: 이 옵션을 0이 아닌 값으로 설정하면 PHP는 ~./netrc 파일에서 연결하려는 원격 사이트의 사용자 이름과 비밀번호를 찾습니다.
CURLOPT_FOLLOWLOCATION: 이 옵션을 0이 아닌 값(예: "Location: ") 헤더로 설정하면 서버는 이를 HTTP 헤더의 일부로 보냅니다(이는 재귀적이라는 점에 유의하세요. PHP "위치:" 형식의 헤더가 전송됩니다.
CURLOPT_PUT: HTTP를 사용하여 파일을 업로드하려면 이 옵션을 0이 아닌 값으로 설정하세요. 이 파일을 업로드하려면 CURLOPT_INFILE 및 CURLOPT_INFILESIZE 옵션
을 설정해야 합니다.
CURLOPT_MUTE: 이 옵션을 0이 아닌 값으로 설정하면 PHP는 CURL 함수에 대해 완전히 침묵합니다.
CURLOPT_TIMEOUT: 긴 정수를 최대 초 수로 설정합니다.
CURLOPT_LOW_SPEED_LIMIT: 전송되는 바이트 수를 제어하려면 긴 정수를 설정하세요.
CURLOPT_LOW_SPEED_TIME: CURLOPT_LOW_SPEED_LIMIT에 지정된 바이트 수를 전송할 시간(초)을 제어하려면 긴 정수를 설정하세요.
CURLOPT_RESUME_FROM: 바이트 오프셋 주소(전송하려는 시작 형식)가 포함된 긴 매개변수를 전달합니다.
CURLOPT_SSLVERSION: SSL 버전이 포함된 긴 매개변수를 전달합니다. 기본적으로 PHP는 자체 노력에 의해 결정되며 보안을 강화하려면 수동으로 설정해야 합니다.
CURLOPT_TIMECONDITION: 긴 매개변수를 전달하여 CURLOPT_TIMEVALUE 매개변수 처리 방법을 지정합니다. 이 매개변수를 TIMECOND_IFMODSINCE 또는 TIMECOND_ISUNMODSINCE로 설정할 수 있습니다. 이는 HTTP에만 해당됩니다.
CURLOPT_TIMEVALUE: 1970-1-1부터 현재까지의 시간(초)을 전달합니다. 이 시간은 CURLOPT_TIMEVALUE 옵션 또는 기본 TIMECOND_IFMODSINCE에 의해 지정된 값으로 사용됩니다.
다음 옵션의 값은 문자열로 처리됩니다.
CURLOPT_URL: PHP를 사용하여 검색하려는 URL 주소입니다. 컬_init() 함수를 사용하여 초기화하는 동안 이 옵션을 설정할 수도 있습니다.
CURLOPT_USERPWD: [사용자 이름]:[비밀번호] 형식으로 문자열을 전달하고 PHP를 사용하여 연결합니다.
CURLOPT_PROXYUSERPWD: 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 주소가 포함된 IP 주소를 전달합니다. 이 POST 명령은 원격 서버에 우리가 지정한 IP 주소에 연결하도록 지시합니다. 이 문자열은 IP 주소, 호스트 이름, 네트워크 인터페이스 이름(UNIX의 경우) 또는 '-'(시스템 기본 IP 주소 사용)일 수 있습니다.
CURLOPT_COOKIE: HTTP 쿠키가 포함된 연결 헤더를 전달합니다.
CURLOPT_SSLCERT: PEM 형식의 인증서가 포함된 문자열을 전달합니다.
CURLOPT_SSLCERTPASSWD: CURLOPT_SSLCERT 인증서를 사용하는 데 필요한 비밀번호가 포함된 비밀번호를 전달합니다.
CURLOPT_COOKIEFILE: 쿠키 데이터가 포함된 파일 이름이 포함된 문자열을 전달합니다. 이 쿠키 파일은 Netscape 형식일 수도 있고 파일에 저장된 HTTP 스타일 헤더 스택일 수도 있습니다.
CURLOPT_CUSTOMREQUEST: HTTP 요청 시 GET 또는 HEAD에서 사용할 문자를 전달합니다.
위는 PHP가 컬을 사용하여 원격 이미지를 얻는 방법입니다. 모든 사람의 학습에 도움이 되기를 바랍니다.