575 Stimmen

Verwendung von cURL zum Hochladen von POST-Daten mit Dateien

Ich möchte cURL verwenden, um nicht nur Datenparameter in HTTP POST zu senden, sondern auch Dateien mit bestimmten Formularnamen hochzuladen. Wie soll ich das anstellen?

HTTP-Post-Parameter:

Benutzerkennung = 12345 filecomment = Dies ist eine Bilddatei

HTTP Datei-Upload: Dateispeicherort = /home/user1/Desktop/test.jpg Formularname für die Datei = image (entspricht dem $_FILES['image'] auf der PHP-Seite)

Ich habe mir einen Teil des cURL-Befehls wie folgt vorgestellt:

curl -d "userid=1&filecomment=This is an image file" --data-binary @"/home/user1/Desktop/test.jpg" localhost/uploader.php

Das Problem, das sich mir stellt, ist folgendes:

Notice: Undefined index: image in /var/www/uploader.php

Das Problem ist, dass ich $_FILES['image'] verwende, um Dateien im PHP-Skript abzuholen.

Wie kann ich meine cURL-Befehle entsprechend anpassen?

2voto

JeWoPeR Punkte 95

Alle gesendeten Dateien in einem Ordner speichern: php-Datei auf dem Host. u.php:

<?php
$uploaddir = 'C:/VALID_DIR/';
 echo '<pre>';
foreach ($_FILES as $key => $file) {
    if(!isset($file) || !isset($file['name'])) continue;
    $uploadfile = $uploaddir . basename($file['name']);

    if (move_uploaded_file($file['tmp_name'], $uploadfile)) {
        echo "$key file > $uploadfile .\n";
    } else {
        echo " Error $key  file.\n";
    }
}
print_r($_FILES);
print "</pre>";?>

Verwendung durch den Kunden:

curl -v -F filename=ff.xml -F upload=@ff.xml https://myhost.com/u.php

Das hat bei mir funktioniert.

Meine VM ist abgestürzt und hat nur eine Internetverbindung. Ich habe einige Dateien auf diese Weise wiederhergestellt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X