datei-upload

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    ich hab jetzt mal in meinem html-formular 3 file-felder angelegt.
    die namen der file-felder lauten alle "userfile[]".

    hab dann mal durchgetestet, 3 dateien auf einmal hochzuladen.
    leider funktioniert es nicht.

    als Ausgabe von $attachment=$_FILES['userfile']['name']; erhalte ich "Array"

    hab dann auch mal $attachment=$_FILES['userfile[]']['name']; probiert, funzt aber auch nicht.

    ich bekomm auch bei

    echo '<pre>';
    print_r($_POST['userdata']);
    echo '</pre>';

    keine Ausgabe!??!?!?

    der upload soll mit folgendem code in der php-datei erfolgen:

    PHP-Code:
    if ($Submit){


    $uploaddir $_SERVER["DOCUMENT_ROOT"].'/upload/';
    $attachment=$_FILES['userfile']['name'];
    $attachmentlink="upload/".$_FILES['userfile']['name'];

    if (
    move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir $_FILES['userfile']['name'])) {
        
    } else {
        

    wo liegt der Hund begraben!?!?

    Kommentar


    • #32
      das hier ... $_FILES['userfile[]']['name']; ... kann schon einmal gar nicht funktionieren.

      und das ... $_FILES['userfile']['name']; ... ein array ist, kann schon hinkommen.

      es gibt aber auch die schöne funktion print_r() in php. damit kann man sich arrays ansehen. also mache mal ....
      PHP-Code:
      echo '<pre>';
      print_r($_FILES);
      echo 
      '</pre>'
      .... und du wirst schlauer sein.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #33
        ok, das gibt das ding aus.

        Code:
        Array
        (
            [userfile] => Array
                (
                    [name] => Array
                        (
                            [0] => matador.gif
                            [1] => kneter.gif
                            [2] => Alexbikinik.jpg
                        )
        
                    [type] => Array
                        (
                            [0] => image/gif
                            [1] => image/gif
                            [2] => image/pjpeg
                        )
        
                    [tmp_name] => Array
                        (
                            [0] => /home/www/web28/phptmp/phpPfRbMl
                            [1] => /home/www/web28/phptmp/phpACjiGL
                            [2] => /home/www/web28/phptmp/phpgMEPev
                        )
        
                    [error] => Array
                        (
                            [0] => 0
                            [1] => 0
                            [2] => 0
                        )
        
                    [size] => Array
                        (
                            [0] => 12928
                            [1] => 19984
                            [2] => 73322
                        )
        
                )
        
        )
        sieht doch ganz gut aus, oder?
        error => 0!!

        nur landen die dateien nicht in meinem upload-verzeichnis!
        wo liegt der unterschied bei der programmierung, ob ich eine datei oder mehrere hochladen möchte!? hab doch ansonsten nichts verändert!?


        EDIT:
        code.tags by Abraxax
        Zuletzt geändert von Abraxax; 06.08.2003, 12:01.

        Kommentar


        • #34
          Original geschrieben von karibikjoe
          hab doch ansonsten nichts verändert!?
          genau da liegt dein problem. du hast nichts geändert.

          wie man unschwer erkennen kann, besitzt das array neue unterarrays, die du berücksichtigen musst.
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #35
            hier mal ein kleines beispiel ....
            PHP-Code:
            <?php

                
            if (count($_FILES['userfile']['name'])>0)
                {
                    for(
            $i=0;$i<count($_FILES['userfile']['name']);$i++)
                    {
                        if (
            move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploaddir $_FILES['userfile']['name'][$i]))
                        {
                            
            // do this
                        
            }
                        else
                        {
                            
            // do that
                        
            }
                    }
                }
                
            ?>
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #36
              lass mich dein beispiel mal kurz interpretieren:


              PHP-Code:

              <?php

                  
              if (count($_FILES['userfile']['name'])>0)

                  {   
              // wird ausgeführt, sobald eine $_FILES['userfile']['name'] existiert, 
                       // also sobald eine datei mitgeschickt wird

                      
              for($i=0;$i<count($_FILES['userfile']['name']);$i++)

                      {  
              //  für jedes array $_FILES['userfile']['name'] wir diese for-schleife 
                          // durchlaufen

                          
              if (move_uploaded_file($_FILES['userfile']['tmp_name'][$i], 
              $uploaddir $_FILES['userfile']['name'][$i]))
                           
              // ja, und der teil verschiebt die datei aus dem temporären verz. 
                           // ins upload-verzeichnis.
                          
              {
                             
              // do this
                          
              }
                          else
                          {
                              
              // do that
                          
              }
                      }
                  }
                  
              ?>
              ich glaub dass ist doch alles was ich brauch, oder?
              leider funktioniert es so noch nicht!!

              es wird doch jetzt mit jedem Element des Arrays $_FILES dieser code ausgeführt:

              if (move_uploaded_file($_FILES['userfile']['tmp_name'][$i],
              $uploaddir . $_FILES['userfile']['name'][$i]))


              wie stell ich fest, ob er überhaupt in die for-schleife geht?!?

              Kommentar


              • #37
                wenn ihr hier schon mal bei dem thema seid...

                ich hab ein riesen problem:

                hab ein upload skript welches bei mir und diversen providern webservern wunderbar funktioniert.

                bei levanzo gibts allerdingst mächtig probleme, da dort der safemode aktiviert ist.

                ich habs mit

                exec() und move_uploaded_file()

                probiert beides funktioniert leider nicht

                gibt es eine möglichkeit auch bei aktiviertem safemode auf das /tmp verzeichnis zuzugreifen oder ist dies eine sache der unmöglichkeit ?

                also... ist es möglich uploads mit aktivierten safemode durchzuführen ?

                hier noch mal die verzeichnisse mit den ich arbeite..

                Quellverzeichnis: /tmp/php6pRa2F
                Zielverzeichnis: /home/www/htdocs/*******/cms/tools/browser/tmp/logo_neu.jpg

                hoffe auf eure hilfe!
                gruß bo

                Kommentar


                • #38
                  Original geschrieben von karibikjoe
                  wie stell ich fest, ob er überhaupt in die for-schleife geht?!?
                  mache ein test-echo dort rein, wo er hingekommen sein sollte... wo ist das problem?

                  Original geschrieben von bo2k
                  bei levanzo gibts allerdingst mächtig probleme, da dort der safemode aktiviert ist.
                  wenn der safe-mode aktiv ist, wird es wohl nicht gehen, befürchte ich. ich kann mich aber auch irren... suche mal im forum.
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #39
                    hab leider nichts gefunden was mir weiterhelfen könnte.

                    wenn safe mode aktiviert ist werden auch alle uploads unterbunden, außer wenn der /tmp ordner im base_dir drine liegt. dann läßt sich das wohl machen.

                    naja...
                    provider wechsel ist angesagt, levanzo ist mir sowieso eine nummer zu laggy

                    Kommentar


                    • #40
                      Original geschrieben von bo2k
                      [...] levanzo ist mir sowieso eine nummer zu laggy
                      sowas nimmt man ja auch nicht...

                      aber schaue mal im providerforum durch. da findest du 100%ig was für dich.
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #41
                        ich hab jetzt mal in jede schleife ein echo reingebaut:

                        die for-schleife wird für jeden dateianhang einmal ausgeführt, allerdings springt er dann bei der

                        if(move_uploaded_file)

                        Anweisung immer in den else-bereich!

                        Ich weiss nicht warum?
                        Muss ich die if(move_uploded_file) verändern wenn ich mehr als 1 datei anhänge!?

                        Oder gibts da eventuell sogar eine serverseitige einstellung / beschränkung!?

                        gruß

                        karibikjoe

                        Kommentar


                        • #42
                          hab den fehler gefunden!

                          ein so wichtiges [$i] hat gefehlt!!
                          und ich habs di ganze zeit übersehen!!!

                          nun noch eine kurze frage!
                          hab im php-handbuch über die move_uploaded_file-funktion gelesen, dass bereits vorhandene dateien mit gleichem dateinamen überschrieben werden.

                          Gibt es eine möglichkeit das zu umgehen!?
                          kann man da evtl. automatisch für jeden upload einen neuen ordner anlegen lassen?

                          Danke nochmal

                          karibikjoe

                          Kommentar


                          • #43
                            order kannst du selber anlegen. ist ja klar. und prüfen, ob eine datei schon vorhanden ist, kannst du bestimmt auch schon .
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #44
                              natürlich kann ich selbst einen ordner anlegen!!

                              aber mich interessiert ob das nicht irgendwie automatisch geht!?
                              dass bei jedem upload mit dateianhang ein ordner erstellt wird, in den die dateien reinkommen! sonst bekomm ich irgendwann probleme mit überschriebenen dateien...!

                              Könnte dann den Ordner-namen (falls der irgendwie als variable zur verfügung steht) in verbindung mit dem dateinamen in meine datenbank schreiben und durch einen link in einem html-formular die dateien öffnen.

                              das mit dem prüfen, ob eine datei schon vorhanden ist ist mir noch! neu....!?

                              Kommentar


                              • #45
                                Original geschrieben von karibikjoe
                                natürlich kann ich selbst einen ordner anlegen!!
                                aber mich interessiert ob das nicht irgendwie automatisch geht!?
                                das meinte aber auch. in php gibt es einen befehl zum anlegen einen ordners, den du nur im script einbauen musst.
                                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                                Kommentar

                                Lädt...
                                X