Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert die Funktion zum Hochladen von Dateien über CURL

PHP implementiert die Funktion zum Hochladen von Dateien über CURL

不言
不言Original
2018-05-31 16:28:161901Durchsuche

In diesem Artikel wird hauptsächlich die Funktion zum Hochladen von Dateien über CURL in PHP vorgestellt und die zugehörigen Attributeinstellungen und Verwendungsfähigkeiten von PHP mithilfe des Curl-Datei-Upload-Vorgangs anhand von Beispielen analysiert

Die Beispiele in diesem Artikel werden erläutert. Verwenden Sie PHP, um die Funktion zum Hochladen von Dateien über CURL zu implementieren. Teilen Sie es als Referenz mit allen:

Um CURL in PHP zum Hochladen von Dateien zu verwenden, müssen Sie nur ein bestimmtes Feld in der Anfrage auf den vollständigen Pfad setzen Geben Sie die Datei ein, die hochgeladen werden muss, und beginnen Sie mit „@“. Verwenden Sie dann CURL, um die Variable im POST-Modus an den Server zu senden. Die entsprechenden Informationen zur hochgeladenen Datei können von der superglobalen Variablen $_FILES auf der Serverseite abgerufen werden.

Im Folgenden demonstrieren wir diesen Prozess anhand eines Beispiels.

Angenommen, es gibt lokal eine Textdatei log.txt, ihr Pfad ist „/www/test/log.txt“ und der Inhalt lautet wie folgt:

this is a file for test
hello PythonTab!

Um diese Datei in das serverseitige Skript http://www.php.cn/article.html hochzuladen, haben wir ein lokales Skript namens „curl_file.php“ mit folgendem Inhalt geschrieben:

<?php
$url = "http://www.php.cn/article.html";
$post_data = array(
"foo" => "bar",
//要上传的本地文件地址
"upload" = > "@/www/test/log.txt"
);
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , $url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch , CURLOPT_POST, 1);
curl_setopt($ch , CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
?>

Die Logik von curl_file.php ist sehr einfach. Legen Sie die POST-Variable $post_data fest, wobei der Upload auf die Datei verweist, die gesendet werden muss. Hier ist zu beachten, dass wir bei der vorherigen Verwendung von POST eine Zeichenfolge gesendet und dann file_get_contents("php//input") auf der Serverseite verwendet haben. Dies unterscheidet sich von der Verwendung hier. Tatsächlich kann POST auch einen Schlüsselwert senden Paare wie GET. Auf der Serverseite gibt es eine superglobale Variable $_POST, die genau wie $_GET den Wert der entsprechenden POST-Daten abrufen kann. Zu beachten ist, dass die Variable zum Hochladen von Dateien nicht in $_POST, sondern in $_FILES existiert.

Um die Logik des Servers zu zeigen, der die Datei-Upload-Anfrage aus dem obigen Code empfängt, haben wir den folgenden Code in upload.php geschrieben:

<?php
echo var_export($_FILES,true);
echo file_get_contents($_FILES[&#39;upload&#39;][&#39;tmp_name&#39;]);
copy($_FILES[&#39;upload&#39;][&#39;tmp_name&#39;], "./log_copy.txt");
?>

upload.php verwendet zunächst var_export, um die Variable $_FILES an die Standardausgabe auszugeben, verwendet dann file_get_contents, um den Inhalt der Datei zu lesen, auf die $_FILES['upload']['tmp_name'] zeigt, und gibt ihn an die Standardausgabe aus und passt dann die Datei, auf die $_FILES['upload']['tmp_name'] zeigt, an die Datei log_copy.txt im aktuellen Verzeichnis an. Die Standardausgabe dieses Skripts lautet wie folgt:

array(
&#39;upload&#39; =>
array(
&#39;name&#39; => &#39;log.txt&#39;,
&#39;type&#39; => &#39;application/octet-stream&#39;,
&#39;tmp_name&#39; => &#39;/tmp/phpLUB59F&#39;,
&#39;error&#39; => 0,
&#39;size&#39; => 36,
)
)
this is a file for test
hello PythonTab!

Sie können sehen, dass es in der Variablen $_FILES ein Upload-Array gibt, das den hochgeladenen Dateibeschreibungsinformationen entspricht, wobei Name und Typ den Namen und Typ darstellen jeweils. tmp_name ist kritischer. Nachdem der Server die hochgeladene Datei erhalten hat, schreibt er die Datei in eine temporäre Datei. Der Name dieser temporären Datei ist der Wert von tmp_name. Aus diesem Grund können wir den Dateiinhalt einer log.txt abrufen die Datei lesen. Im Allgemeinen muss der Server die hochgeladene Datei sofort lesen oder in eine andere Datei kopieren, da die temporäre Datei, auf die tmp_name verweist, nach der Ausführung des Serverskripts gelöscht wird. Das letzte Zeile dient dazu, die temporäre Datei in unsere Zieldatei zu kopieren.

Verwandte Empfehlungen:

PHP-Methode zum Aufrufen der WebService-ASMX-Datei von .Net über Soap

PHP-Methode zum Aufrufen von .Net WebService-ASMX-Datei über Strace Methoden zum Auffinden der Fehlerursache

Das obige ist der detaillierte Inhalt vonPHP implementiert die Funktion zum Hochladen von Dateien über CURL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn