TL; DR: Warum funktioniert das erneute Hochladen der hochgeladenen Daten nicht?Warum funktioniert mein PHP-Upload nicht?
Ich versuche, die Daten, die ein Benutzer in meine Datei hochgeladen hat, auf einen anderen Server hochzuladen. Das heißt, ich möchte meine Postdaten posten.
Ich möchte einige Daten auf upload.php
hochladen, die dann auf test.php
(die einfach die rohen Postdaten ausgibt) gebucht werden soll. Und aufgrund der Speicherersparnis wollte ich, dass es funktioniert, ohne die Nachricht als ganze Nachricht zu erzeugen. Also möchte ich auch nicht curl verwenden.
test.php
<?php
echo 'foo', file_get_contents('php://input'), 'bar';
upload.php
<?php
//new line variable
$NL = "\r\n";
//open the posted data as a resource
$client_upload = fopen('php://input', 'r');
//open the connection to the other server
$server_upload = fsockopen('ssl://example.com', 443);
//write the http headers to the socket
fwrite($server_upload, 'POST /test.php HTTP/1.1' . $NL);
fwrite($server_upload, 'Host: example.com' . $NL);
fwrite($server_upload, 'Connection: close' . $NL);
//header/body divider
fwrite($server_upload, $NL);
//loop until client upload reached the end
while (!feof($client_upload)) {
fwrite($server_upload, fread($client_upload, 1024));
}
//close the client upload resource - not needed anymore
fclose($client_upload);
//intitalize response variable
$response = '';
//loop until server upload reached the end
while (!feof($server_upload)) {
$response .= fgets($server_upload, 1024);
}
//close the server upload resource - not needed anymore
fclose($server_upload);
//output the response
echo $response;
Wenn I { "test": true }
(von Fiedler) zu test.php
Datei schreiben, es foo{ "test": true }bar
ausgibt.
Jetzt, wenn ich versuche, das gleiche für upload.php
zu tun, bekomme ich nur foobar
(und die http-Header von test.php
), aber nicht den hochgeladenen Inhalt.