Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Dateien über CURL hochladen

PHP-Dateien über CURL hochladen

PHP中文网
PHP中文网Original
2017-02-10 14:20:342295Durchsuche

p>PHP verwendet CURL zum Hochladen von Dateien. Geben Sie in der Anfrage einfach den vollständigen Pfad der Datei ein, die mit „@“ beginnt, und verwenden Sie dann CURL zum POST Variable.-Methode wird an den Server gesendet und die entsprechenden hochgeladenen Dateiinformationen können von der superglobalen Variablen $_FILES auf der Serverseite abgerufen werden.

<br>

Nachfolgend zeigen wir diesen Prozess anhand eines Beispiels.

<br>

Angenommen, es gibt eine lokale Textdatei log.txt, ihr Pfad lautet „/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.pythontab.com/upload.php hochzuladen, haben wir ein lokales Skript namens „curl_file.php“ mit folgendem Inhalt geschrieben:

<php?
//要上传的本地文件地址
"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 tatsächlich von der Verwendung von POST kann auch wie GET sein. 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.

<br>

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:

<br>

upload.php verwendet zuerst 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 aus die Standardausgabe und fügt dann $_FILES[' Die Datei, auf die der Upload zeigt']['tmp_name'] ein, wird in die Datei log_copy.txt im aktuellen Verzeichnis kopiert. 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 Beschreibungsinformationen der hochgeladenen Datei entspricht, wobei Name und Typ den Namen darstellen bzw. Typ. 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 Ausführung des Serverskripts gelöscht wird. Das letzte Zeile dient dazu, die temporäre Datei in unsere Zieldatei zu kopieren.

<br>

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