Ergebnis 1 bis 3 von 3
  1. #1
    Mitglied
    Registriert seit
    Jan 2012
    Beiträge
    1

    Question 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)

  2. #2
    Mitglied
    Registriert seit
    Jun 2009
    Ort
    Im Forum
    Beiträge
    530

    Standard Re: PHP - Fileuploade über eigenen Server umleiten und Ergebnis auswerten.

    Zitat Zitat von yooui Beitrag anzeigen
    es hat warscheinlich etwas damit zu tun, dass bei einem Dateiupload die Daten in einem Array übergeben wird.
    Dann lass es doch als einen String übergeben. Anstatt jede Zeile per fputs zu senden, setzte sie erst alle zusammen in einer Variable und schick alle gleichzeitig per fputs.

  3. #3
    Mitglied
    Registriert seit
    Mar 2007
    Beiträge
    2.700

    Standard 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.

  4.  
     
     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •