Forum Doku Wiki Blog

Forumsarchiv 2002, Oktober
Schreiben tempor㤲r Datei umgehen

archivierte Beiträge lesen

  1. (PHP) Schreiben tempor㤲r Datei umgehen von Andreas Korthaus, 10. 10. 2002, 13:16

Schreiben tempor㤲r Datei umgehen

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

Schreiben tempor㤲r Datei umgehen

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

Schreiben tempor㤲r Datei umgehen

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