Heim > Artikel > Web-Frontend > PHP verwendet Curl, um Kenntnisse über die Implementierungsmethode für Remote-Bilder zu erhalten
Curl erfordert PHP-Umgebungsunterstützung, um zu sehen, ob sie unterstützt wird. Im Allgemeinen müssen Sie das „;“ vor „extension=php_curl.dll“ in php.ini entfernen und neu starten IIS oder APACHE.
Der Code lautet wie folgt:
/* *@通过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; }
Beim Aufruf direkt getImg("/logo.jpg", "upload/image.jpg")
Implementierungscode 2
Der Code lautet wie folgt:
<?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 legt eine Option für CURL-Aufrufe fest
bool curl_setopt (int ch, string option, gemischter Wert)
Die Funktion „curl_setopt()“ legt Optionen für eine CURL-Sitzung fest. Der Optionsparameter ist die gewünschte Einstellung und der Wert ist der von dieser Option angegebene Wert.
Die Werte der folgenden Optionen werden als lange Ganzzahlen verwendet (angegeben im Optionsparameter):
CURLOPT_INFILESIZE: Wenn Sie eine Datei auf die Remote-Site hochladen, teilt diese Option PHP die Größe der hochgeladenen Datei mit.
CURLOPT_VERBOSE: Wenn Sie möchten, dass CURL jedes unerwartete Ereignis meldet, legen Sie diese Option auf einen Wert ungleich Null fest.
CURLOPT_HEADER: Wenn Sie einen Header in die Ausgabe einschließen möchten, legen Sie diese Option auf einen Wert ungleich Null fest.
CURLOPT_NOPROGRESS: Wenn Sie nicht möchten, dass PHP einen Fortschrittsbalken für CURL-Übertragungen anzeigt, setzen Sie diese Option auf einen Wert ungleich Null.
Hinweis: PHP setzt diese Option automatisch auf einen Wert ungleich Null. Sie sollten diese Option nur zu Debugging-Zwecken ändern.
CURLOPT_NOBODY: Wenn Sie den Körperteil nicht in die Ausgabe einschließen möchten, setzen Sie diese Option auf einen Wert ungleich Null.
CURLOPT_FAILONERROR: Wenn Sie möchten, dass PHP nicht angezeigt wird, wenn ein Fehler auftritt (HTTP-Code-Rückgabe größer oder gleich 300), legen Sie diese Option auf einen Wert ungleich Null fest. Das Standardverhalten besteht darin, eine normale Seite zurückzugeben und den Code zu ignorieren.
CURLOPT_UPLOAD: Wenn Sie möchten, dass PHP sich auf das Hochladen vorbereitet, setzen Sie diese Option auf einen Wert ungleich Null.
CURLOPT_POST: Wenn Sie möchten, dass PHP einen regulären HTTP-POST ausführt, setzen Sie diese Option auf einen Wert ungleich Null. Dieser POST ist vom gewöhnlichen Typ application/x-www-from-urlencoded und wird hauptsächlich von HTML-Formularen verwendet.
CURLOPT_FTPLISTONLY: Setzen Sie diese Option auf einen Wert ungleich Null und PHP listet die Verzeichnisnamen für FTP auf.
CURLOPT_FTPAPPEND: Setzen Sie diese Option auf einen Wert ungleich Null und PHP wendet die Remote-Datei an, anstatt sie zu überschreiben.
CURLOPT_NETRC: Setzen Sie diese Option auf einen Wert ungleich Null und PHP sucht in Ihrer ~./netrc-Datei nach dem Benutzernamen und Passwort der Remote-Site, zu der Sie eine Verbindung herstellen möchten.
CURLOPT_FOLLOWLOCATION: Setzen Sie diese Option auf einen Header mit einem Wert ungleich Null (wie „Location:“). Der Server sendet ihn als Teil des HTTP-Headers (beachten Sie, dass dies rekursiv ist). PHP Es wird ein Header der Form „Standort:“ gesendet.
CURLOPT_PUT: Setzen Sie diese Option auf einen Wert ungleich Null, um eine Datei über HTTP hochzuladen. Um diese Datei hochzuladen, müssen Sie die Optionen CURLOPT_INFILE und CURLOPT_INFILESIZE festlegen.
CURLOPT_MUTE: Setzen Sie diese Option auf einen Wert ungleich Null und PHP verhält sich für die CURL-Funktion völlig stumm.
CURLOPT_TIMEOUT: Legen Sie eine lange Ganzzahl als maximale Anzahl von Sekunden fest.
CURLOPT_LOW_SPEED_LIMIT: Legen Sie eine lange Ganzzahl fest, um zu steuern, wie viele Bytes gesendet werden.
CURLOPT_LOW_SPEED_TIME: Legen Sie eine lange Ganzzahl fest, um zu steuern, wie viele Sekunden die durch CURLOPT_LOW_SPEED_LIMIT angegebene Anzahl von Bytes übertragen werden soll.
CURLOPT_RESUME_FROM: Übergeben Sie einen langen Parameter, der die Byte-Offset-Adresse enthält (das Startformular, zu dem Sie übertragen möchten).
CURLOPT_SSLVERSION: Übergeben Sie einen langen Parameter, der die SSL-Version enthält. Standardmäßig wird PHP von selbst ermittelt, aus Sicherheitsgründen müssen Sie es manuell festlegen.
CURLOPT_TIMECONDITION: Übergeben Sie einen langen Parameter, um anzugeben, wie mit dem Parameter CURLOPT_TIMEVALUE umgegangen werden soll. Sie können diesen Parameter auf TIMECOND_IFMODSINCE oder TIMECOND_ISUNMODSINCE setzen. Dies gilt nur für HTTP.
CURLOPT_TIMEVALUE: Vergeht eine Anzahl von Sekunden vom 1.1.1970 bis heute. Diese Zeit wird als angegebener Wert von der Option CURLOPT_TIMEVALUE oder vom Standardwert TIMECOND_IFMODSINCE verwendet.
Die Werte der folgenden Optionen werden als Zeichenfolgen behandelt:
CURLOPT_URL: Dies ist die URL-Adresse, die Sie mit PHP abrufen möchten. Sie können diese Option auch während der Initialisierung mit der Funktion „curl_init()“ festlegen.
CURLOPT_USERPWD: Übergeben Sie eine Zeichenfolge in der Form [Benutzername]:[Passwort] und verwenden Sie PHP, um eine Verbindung herzustellen.
CURLOPT_PROXYUSERPWD: Übergeben Sie eine Zeichenfolge im Format [Benutzername]:[Passwort], um eine Verbindung zum HTTP-Proxy herzustellen.
CURLOPT_RANGE: Übergeben Sie einen Bereich, den Sie angeben möchten. Es sollte im Format „X-Y“ vorliegen, wobei X oder Y ausgeschlossen sind. HTTP-Übertragungen unterstützen auch mehrere durch Kommas getrennte Intervalle (X-Y, N-M).
CURLOPT_POSTFIELDS: Übergeben Sie eine Zeichenfolge mit allen Daten als HTTP-„POST“-Operation.
CURLOPT_REFERER: Eine Zeichenfolge, die einen „Referer“-Header in der HTTP-Anfrage enthält.
CURLOPT_USERAGENT: Eine Zeichenfolge, die einen „User-Agent“-Header in der HTTP-Anfrage enthält.
CURLOPT_FTPPORT: Übergeben Sie eine IP-Adresse, die die IP-Adresse enthält, die vom FTP-Befehl „POST“ verwendet wird. Dieser POST-Befehl weist den Remote-Server an, eine Verbindung zu der von uns angegebenen IP-Adresse herzustellen. Diese Zeichenfolge kann eine IP-Adresse, ein Hostname, ein Netzwerkschnittstellenname (unter UNIX) oder „-“ (verwenden Sie die Standard-IP-Adresse des Systems) sein.
CURLOPT_COOKIE: Übergeben Sie einen Verbindungsheader, der ein HTTP-Cookie enthält.
CURLOPT_SSLCERT: Übergeben Sie eine Zeichenfolge, die das Zertifikat im PEM-Format enthält.
CURLOPT_SSLCERTPASSWD: Übergeben Sie ein Passwort, das das erforderliche Passwort zur Verwendung des CURLOPT_SSLCERT-Zertifikats enthält.
CURLOPT_COOKIEFILE: Übergeben Sie eine Zeichenfolge mit dem Namen der Datei, die Cookie-Daten enthält. Diese Cookie-Datei kann im Netscape-Format vorliegen oder ein Stapel von in der Datei gespeicherten HTTP-Headern sein.
CURLOPT_CUSTOMREQUEST: Übergeben Sie bei einer HTTP-Anfrage ein Zeichen, das von GET oder HEAD verwendet werden soll.
Das Obige zeigt, wie PHP Curl verwendet, um Remote-Bilder zu erhalten. Ich hoffe, es wird für das Lernen aller hilfreich sein.