Der folgende Beitrag wurde am 10. 10. 2002, 13:16 Uhr von Andreas Korthaus veröffentlicht.
Hallo!
Nachdem jetzt Dank eines PHP-Updates das versenden von binären Daten über cURL funktioniert, bliebe da noch eine klitzekleine Frage, die nicht unbedingt mit cURL zu tun hat:
Kann ich auch den Binärstring direkt an die cURL-Funktion übergeben, oder muß ich erst den String in eine Datei schreiben, und den Pfad dann übergeben?
So sieht das Script aus(funktioniert):
$file = "c:/www/test.txt";
$fp = fopen($file, "w");
fputs($fp, $binary_string);
fclose($fp);
$formvars["upfile"] = "@$file";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://server.de/test.php");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $formvars);
$result = curl_exec ($ch);
curl_close ($ch);
Ginge das evtl. direkt ohne Umweg über externe Datei?
Was mich außerdem etwas stutzig macht, wieso wird der Dateipfad und nicht der Dateiname übergeben:
[_FILES] => Array
(
[upfile] => Array
(
[name] => c:/www/test.txt
[type] => text/plain
[tmp_name] => /tmp/phpmpC67k
[size] => 2675
)
)
Viel Grüße
Andreas
Der folgende Beitrag wurde am 10. 10. 2002, 15:02 Uhr von Philipp Hasenfratz veröffentlicht.
Halihallo Andreas
> Kann ich auch den Binärstring direkt an die cURL-Funktion übergeben, oder muß ich erst den String in eine Datei schreiben, und den Pfad dann übergeben?
[...]
> Ginge das evtl. direkt ohne Umweg über externe Datei?
Du übergibtst ja Formularfelder. Warum packst du die Daten nicht einfach in ein Formularfeld und sendest diese dann über CURL?
$formvars["binary_string"] = 'lkjas9i759843zjkbfadkjz7z...';
diesen kannst du ja dann über $_POST auf der anderen Seite auslesen. Oder hab ich dich misverstanden?
> Was mich außerdem etwas stutzig macht, wieso wird der Dateipfad und nicht der Dateiname übergeben:
??? - Der Dateiname steht ja dort test.txt... Oder meinst du tmp_name? - Dort ist phpmpC67k der _Name_ der Datei und /tmp/ das Verzeichnis.
Viele Grüsse
Philipp
Der folgende Beitrag wurde am 10. 10. 2002, 16:05 Uhr von Andreas Korthaus veröffentlicht.
Hi!
> > Ginge das evtl. direkt ohne Umweg über externe Datei?
> Du übergibtst ja Formularfelder. Warum packst du die Daten nicht einfach in ein Formularfeld und sendest diese dann über CURL?
> $formvars["binary_string"] = 'lkjas9i759843zjkbfadkjz7z...';
Weil dann folgendes auf dem Seerver ankommt:
Array
(
[bindata] => x�í]M�Û¶�ÝûW ²zß\"÷?
)
das sollten aber 7KB binäre daten sein!
> diesen kannst du ja dann über $_POST auf der anderen Seite auslesen. Oder hab ich dich misverstanden?
nein, im Prinzip schon richtig, nur anscheinend überträgt cURL die Daten dann nicht mit boundary.... sondern einfach als bindata=&%"§$/&%%"...
ich könnte ndas nur mit der zuvor entwickelten methoder mit urlencode(base64($bindata)) umgehen aber wie gesagt wird dadurch der String ca.35% länger und ein paar KB mehr bedeuten eine erheblich längeren Transfer, wogegen das schreiben der Datei fast nichts kostet. Dann mache ich es halt so. Danke Dir!
> > Was mich außerdem etwas stutzig macht, wieso wird der Dateipfad und nicht der Dateiname übergeben:
> ??? - Der Dateiname steht ja dort test.txt... Oder meinst du tmp_name? - Dort ist phpmpC67k der _Name_ der Datei und /tmp/ das Verzeichnis.
in $_FILES["upfile"]["name"] steht nicht test.txt, sondern c:\www\test.txt
Aber das habe ich geklärt, genau wie das obige Problem - curl könnte anders, aber die PHP-Schnittstelle nutzt libcurl halt noch nicht komplett. Und das Modul selbst zu verändern(soll möglich sein) lasse ich dann doch lieber ;-)
Grüße
Andreas
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4