Dateiupload mittels cURL
Hi,
ich habe eine PHP-Datei in der Daten auf- und zubereitet werden, die ich dann in der Variable $putString habe.
Diese Daten muss ich als Datei-Upload an einen Server übertragen.
Dafür hab ich jetzt schon einiges mit cURL rumprobiert, und verschiedene Versionen getestet, aber leider hat keine funktioniert:
Variante 1:
Resultat: cURL-Fehlermeldung: failed creating formpost data
Variante 2:
Resultat in Datei test.php:
Was ist an meinem Quellcode falsch bzw. wie kann ich zu meinem gewünschten Ergebnis kommen?
Vielen Dank
Gruß Stefan
ich habe eine PHP-Datei in der Daten auf- und zubereitet werden, die ich dann in der Variable $putString habe.
Diese Daten muss ich als Datei-Upload an einen Server übertragen.
Dafür hab ich jetzt schon einiges mit cURL rumprobiert, und verschiedene Versionen getestet, aber leider hat keine funktioniert:
Variante 1:
$putString = "Hello, world!";
$putData = tmpfile();
fwrite($putData, $putString);
fseek($putData, 0);
$ch = curl_init();
$data = array("name" => "datei", "file" => "@{$putData}");
curl_setopt($ch, CURLOPT_URL, "http://localhost/test.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
echo curl_exec($ch);
echo curl_error($ch);
fclose($putData);
curl_close($ch);
Variante 2:
$putString = "Hello, world!";
$putData = tmpfile();
fwrite($putData, $putString);
fseek($putData, 0);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/test.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILESIZE, strlen($putString));
curl_setopt($ch, CURLOPT_INFILE, $putData);
curl_setopt($ch, CURLOPT_PUT, 1);
echo curl_exec($ch);
fclose($putData);
curl_close($ch);
$_REQUEST: Array ( )$_FILES: Array ( )
Was ist an meinem Quellcode falsch bzw. wie kann ich zu meinem gewünschten Ergebnis kommen?
Vielen Dank
Gruß Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 123357
Url: https://administrator.de/contentid/123357
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo,
mit dem Beispiel aus der php manuel funktionierts bei mir.
Ich glaube das es dich beim fseek afbaut bzw. das er die daten wlche er da bekommt net ganz verarbeiten kann.
probier doch mal die datei lokal temporär zu specihern und dann einfach mit pfadangabe einzubinden und danach
wenn der upload erfolgreich war kannst sie ja löschen.
mit dem Beispiel aus der php manuel funktionierts bei mir.
<?php
/* http://localhost/upload.php:
print_r($_POST);
print_r($_FILES);
*/
$ch = curl_init();
$data = array('name' => 'Foo', 'file' => '@/home/user/test.png');
curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>
probier doch mal die datei lokal temporär zu specihern und dann einfach mit pfadangabe einzubinden und danach
wenn der upload erfolgreich war kannst sie ja löschen.
Hi Stefan,
hatte das Problem in ähnlicher Form ebenfalls und konnte es lösen, indem ich den "realpath" für die Dateinamen verwendet habe:
"file" => "@" . realpath($putData)
Vielleicht hilft Dir das.
Viele Grüße
Frank
hatte das Problem in ähnlicher Form ebenfalls und konnte es lösen, indem ich den "realpath" für die Dateinamen verwendet habe:
"file" => "@" . realpath($putData)
Vielleicht hilft Dir das.
Viele Grüße
Frank