Formular auf Fremdserver zum Dateiupload Steuern

backlash

Mitglied
Formular auf Fremdserver Steuern ...

Hallo,

ich plane Dateien von meinem Server auf einen anderen zu übertragen,, ich habe jedoch nur die möglichkeit selbiges über ein Formular auf dem Fremdserver zu tun. Ich werde also gezwungen den Upload der daten derzeit manuell vorzunehmen, nun ja ich habe mir gedacht, es müsse doch möglich sein das ein Script das für mich übernimmt und einfach nur das Formular auf dem Fremdserver aufruft und die Daten übermittelt.
Nun gut theoretisch muß ich ja lediglich den Header zusammensetzen und die ganzen daten dann per fsockopen übermitteln. Aber aus irgendeinem Grund klappt des nicht, vielleicht habe ich ja einfach nur nen Fehler übersehen,.

Vielleicht findet jemand von euch den Fehler, ich für meinen Teil bin kurz davor zu resignieren…


PHP:
<?

$host='Serveradresse';
$port=80;
$path='/url/zum/script/upload.php';

// Die Datei die Hochgeladen werden soll
$file_array[0] = "dingoboy.jpg"; // the file
$content_type = "image/jpeg"; // the file mime type
//$content_type = "text/plain";
//echo "file_array[0]:$file_array[0]<br><br>";

srand((double)microtime()*1000000);
$boundary = "---------------------------".substr(md5(rand(0,32000)),0,10);

$data = "--$boundary";

for($i=0;$i<count($file_array);$i++){
   $content_file = join("", file($file_array[$i]));

$data.="
 Content-Disposition: form-data; name=\"event\"

 Eventname
--$boundary
 Content-Disposition: form-data; name=\"eventid\"

 1565
 --$boundary
 Content-Disposition: form-data; name=\"PHPSESSID\"

 ebd2e401d153cfd165e61e10f4954ed7
 --$boundary
 Content-Disposition: form-data; name=\"foto1\" filename=\"$file_array[$i]\"
 Content-Type: $content_type

 $content_file
 --$boundary";

}

$data.="--\r\n\r\n";

$msg =
"POST $path HTTP/1.0
Content-Type: multipart/form-data; boundary=$boundary
Content-Length: ".strlen($data)."\r\n\r\n";$result="";
// open the connection
$f = fsockopen($host, $port);

fputs($f,$msg.$data);

// get the response
while (!feof($f)) $result .= fread($f,32000);

fclose($f);



?>

Backlash
 
Zuletzt bearbeitet:
Hi!

Ich kann in deinem Code keinen Fehler entdecken, habe mich aber noch nicht so intensiv mit der Client-Simulation (welche du ja eigentlich betreibst) auseinandergesetzt.

Eines ist mir doch aufgefallen: Bist du dir sicher, dass der angesprochene Server mit HTTP/1.0 läuft?
In dieser HTTP-Version gibt es das Problem, dass jeder Server unter einer eigenen IP-Adresse laufen muss. Erst bei HTTP/1.1 wird im "Request-Header" der Servername übergeben, damit der Web-Server weiß, welcher Account / welche Website / welche URL eigentlich abgefragt wird. Folglich müsstest du das HTTP-Protokoll der Version 1.1 verwenden, wenn auf dem von dir angesprochenen Server mehr als eine Web-Adresse auf unterschiedliche Accounts / Verzeichnisse zeigen...

Mamphil
 
Zuletzt bearbeitet:
Super ...

Thx genau das war der Fehler.

Jetzt läuft des Script einwandfrei.

Falls wen die Finale Version interessiert, kann er ja einfach Posten.

so long
backlash
 
Zurück