-
22. 01. 2012, 18:39 #1Mitglied
- Registriert seit
- Jan 2012
- Beiträge
- 1
PHP - Fileuploade über eigenen Server umleiten und Ergebnis auswerten.
Erst einmal vielen Dank, dass du diesen Thread liest.
Ich möchte gerne meine Bilder auslagern, auf den Imageshack Server.
Ich habe mein erstes Script:
Spoiler:
HTML-Code:<html> <body> <form action="meinserver.de/upload.php" method="POST" enctype="multipart/form-data"> <input name="fileupload" type="file"> <input type="submit" /> </form> </body> </html>
und das Zweite Script auf meinem Server:
Spoiler:
PHP-Code:<?php
//create array of data to be posted
$post_data["key"] = "567";
$post_data["fileupload"] = $_FILES["fileupload"];
//$post_data["fileupload['name']"] = $_FILES["fileupload"]["name"];
//$post_data["fileupload['type']"] = $_FILES["fileupload"]["type"];
//$post_data["fileupload['size']"] = $_FILES["fileupload"]["size"];
//$post_data["fileupload['tmp_name']"] = $_FILES["fileupload"]["tmp_name"];
//$post_data["fileupload['error']"] = $_FILES["fileupload"]["error"];
//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
$post_items[] = $key . '=' . $value;
}
//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);
//we also need to add a question mark at the beginning of the string
$post_string = '?' . $post_string;
//we are going to need the length of the data string
$data_length = strlen($post_string);
//let's open the connection
$connection = fsockopen('www.imageshack.us', 80);
//sending the data
fputs($connection, "GET /upload_api.php HTTP/1.1\r\n");
fputs($connection, "Host: www.imageshack.us \r\n");
fputs($connection,
"Content-Type: multipart/form-data\r\n");
fputs($connection, "Content-Length: $data_length\r\n");
fputs($connection, "Connection: close\r\n\r\n");
fputs($connection, $post_string);
// Output
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.imageshack.us\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($connection,$out);
while (!feof($connection)) {
echo fgets($connection)."<br>";
}
//closing the connection
fclose($connection);
?>
aber ich bekommen nur die Fehlermeldung:
Spoiler:
HTTP/1.1 200 OK
Server: nginx/1.0.4
Date: Sun, 22 Jan 2012 17:36:15 GMT
Content-Type: text/xml
Transfer-Encoding: chunked
Connection: close
X-Powered-By: PHP/5.2.9
c6
Sorry, but we've detected that unexpected data is received. Required parameter 'fileupload' is missing or your post is not multipart/form-data
0
Was kann ich tun damit das Funktioner???
Habe mich schon informiert und es hat warscheinlich etwas damit zu tun, dass bei einem Dateiupload die Daten in einem Array übergeben wird.
MIt Freundlichen Grüßen,
YOOUI
p.S. BW ist natürlich drin
Geändert von yooui (22. 01. 2012 um 18:50 Uhr)
-
22. 01. 2012, 20:01 #2Mitglied
- Registriert seit
- Jun 2009
- Ort
- Im Forum
- Beiträge
- 530
-
23. 01. 2012, 07:56 #3Mitglied
- Registriert seit
- Mar 2007
- Beiträge
- 2.700
Re: PHP - Fileuploade über eigenen Server umleiten und Ergebnis auswerten.
Bereits der Ansatz ist grundlegend falsch. Nur weil du von PHP einen Array mit einer bestimmten Sammlung von Parametern bekommst, kannst du diese Parameter nicht einfach so an den Server weiter geben.
Fehler die dir unter anderem unterlaufen sind:
- Die Anfrage muss per POST und nicht per GET erfolgen
- Das Format von multipart/form-data ist komplexer als du denkst
- Der Array enthält NICHT das Bild sonder lediglich Metadaten sowie einen temporären Dateinamen im lokalen Dateisystem
Du hast jetzt zwei Möglichkeiten, entweder du lernst wie das http-Protokoll funktioniert oder du verwendest eine fertige Bibliothek wie curl (Dokumentation dazu findest du auf php.net). In jedem Fall musst du dir vorher noch mal anschauen wie Uploads (auf deinen Server) in PHP überhaupt funktionieren, da fehlen dir gerade noch Grundlagen.
-


Zitieren

mehr lesen...







Resident Evil 6 erscheint in...
Heute, 15:21 in gulli:news