Andreas: Fileupload - Verständnisfragen

Hallo, ich weiß, es gibt zig Threads und Articles darüber, und ich habe auch einige gelesen.
Bei PHP.net fand ich folgendes Script:

  
<form enctype="multipart/form-data" action="_URL_" method="post">  
<input type="hidden" name="MAX_FILE_SIZE" value="30000">  
Send this file: <input name="userfile" type="file">  
<input type="submit" value="Send File">  
</form>  

Das soll schon der ganze Dateiupload sein? woher weiß "er" wohin er die Datei hinschieben muss?
Kann es sein, dass damit die Datei in einen temporären Bereich upgeloaded wird, und das Verschieben in ein Verzeichnis muss man mit z.B. move_uploaded_file() machen?

In meinem bisherigen Script setze ich die copy() Funktion ein, die bei anderen wohl klappt, bei mit (IE 6.0) immer zum Absturz des Browsers führt.

Bitte erklärt einem DAU wie das funktioniert.

Gruß Andreas

PS: die PHP Version des Providers ist 4.23

  1. <input type="hidden" name="MAX_FILE_SIZE" value="30000">
    Send this file: <input name="userfile" type="file">
    <input type="submit" value="Send File">

    Das soll schon der ganze Dateiupload sein? woher weiß "er" wohin er die Datei hinschieben muss?

    "Er" ist intelligent?

    Kann es sein, dass damit die Datei in einen temporären Bereich upgeloaded wird, und das Verschieben in ein Verzeichnis muss man mit z.B. move_uploaded_file() machen?

    Das Allwissende empfiehlt einen Blick in die PHP-Anleitung, Themen Steuerung von Dateiuploads (dort insbesondere der Satz " Standardmäßig werden Dateien in dem vorgegebenen temporären Verzeichnis des Servers gespeichert, [...]"), move_uploaded_file().

    Dies war eine Mitteilung des Allwissenden.

    1. Hallo,

      (dort insbesondere der Satz " Standardmäßig werden Dateien in dem vorgegebenen temporären Verzeichnis des Servers gespeichert, [...]"), move_uploaded_file().

      Was bedeutet "vorgegebenen"? Ist das Verzeichnis vom Provider vorgegeben, oder muss ich das tun?

      Gruß Andreas

      1. Hallo Andreas,

        Was bedeutet "vorgegebenen"? Ist das Verzeichnis vom Provider vorgegeben, oder muss ich das tun?

        nein, das musst du nicht tun. Welches Verzeichnis das temp-Verzeichnis ist, legt upload_tmp_dir in der php.ini (->http://de.php.net/manual/de/configuration.directives.php#ini.upload-tmp-dir) fest.

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
        1. Hallo,
          danke erstmal für die Antworten.
          Nachfolgend mein Script. Es ist das gleiche wie im alten Script, Der Browser schmiert einfach ab - nach dem Upload.
          Das komische daran ist, dass nach dem Upload-Scriptteil kein Code mehr kommt.
          Packe ich den Upload-Scriptteil in eine separate Datei, gibts keine Probleme.
          Wer kann mir helfen? Wie gesagt, bei anderen Nutzern des Scriptes gibts scheinbar (noch) keine Probleme.
          Gruß Andreas

          $tmpname = $_FILES['datei']['tmp_name'];
           $filename = $_FILES['datei']['name'];
           $filesize = $_FILES['datei']['size'];
           $mimetype = $_FILES['datei']['type'];
             if ( isset($filename) ){
            if ( $filesize>0 && $filesize<350000 && is_uploaded_file($tmpname)){
             $uploaddir = 'uploads/';
             print "<pre>";
             if (move_uploaded_file($tmpname, $uploaddir . $filename)){
              $filesizeErr = "";
             else
              $filesizeErr = "Es ist ein Fehler beim Dateiupload aufgetreten<br>Datei wurde nicht geladen";
            }
            else
             $filesizeErr = "Dateigröße von 350000 Byte wurde überschritten<br>Datei wurde nicht geladen";
           }
           else
            $filesizeErr = "Ungültiger Dateiname<br>Abbruch des Dateiuploads";

  2. hallo Andreas,

    <form enctype="multipart/form-data" action="_URL_" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="30000">
    Send this file: <input name="userfile" type="file">
    <input type="submit" value="Send File">
    </form>
    Das soll schon der ganze Dateiupload sein?

    Nein. Das ist überhaupt kein Upload, sondern nur das dafür ausgefüllte Formular. Du kannst das ungefähr mit einer Paketsendung vergleichen: da brauchst du auch einen Aufkleber, und den Transport übernimmt dann ein Transportunternehmen. Das Formular, das du angegeben hast, ist gewissermaßen nur dieser "Aufkleber". Den Upload selbst muß noch das Script, dem mit "action" der Name der hochzuladenden Datei übergeben wird, ausführen. Das _kann_ (muß aber nicht) ein PHP-Script sein. In deinem Beispiel ist anstelle eines anderen Scriptnamens ein Platzhalter geschrieben worden mit dem Namen "_URL_".

    woher weiß "er" wohin er die Datei hinschieben muss?

    Das weiß "er", weil du es natürlich in das Script geschrieben hast.

    Kann es sein, dass damit die Datei in einen temporären Bereich upgeloaded wird, und das Verschieben in ein Verzeichnis muss man mit z.B. move_uploaded_file() machen?

    Das kommt darauf an, was dein Script machen soll, ein solches Vorgehen ist durchaus möglich.

    In meinem bisherigen Script setze ich die copy() Funktion ein, die bei anderen wohl klappt, bei mit (IE 6.0) immer zum Absturz des Browsers führt.

    Du hast ja schon die beste Stelle gefunden, an der du Informationen erhalten kannst. Lies nochmal bißchen zu "copy()" nach.

    PS: die PHP Version des Providers ist 4.23

    Das ist in diesem Fall ziemlich unwichtig, Hauptsache ist, er erlaubt überhaupt den Einsatz eigener PHP-Scripts.

    Grüße aus Berlin

    Christoph S.

    1. Hallo Christoph,

      In meinem bisherigen Script setze ich die copy() Funktion ein, die bei anderen wohl klappt, bei mit (IE 6.0) immer zum Absturz des Browsers führt.
      Du hast ja schon die beste Stelle gefunden, an der du Informationen erhalten kannst. Lies nochmal bißchen zu "copy()" nach.

      Jezt habe ich move_uploaded_file() verwendet, und der Fehler ist der gleiche. Siehe auch mein Posting am Ende des Threads.

      Gruß Andreas