Frage zu if (file_exists

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

  • #16
    Original geschrieben von TobiaZ
    überleg doch mal bitte was du in diesen drei zeilen machst. mit verstand..


    $file = $_FILES;
    $file2 = rand(1,100);
    rename($file, $file2);
    hmmm also:

    erste zeile: ich lege fest das die $file das bild ist was der user hochladen möchte
    zweite zeile: ich lege fest das $file2 eine zufällige zahl zwischen 1 und 100 ist
    zeile drei: Ich lege fest das der bildername durch den zufalls wert ersetz wird

    so würd ich sagen hab ich mir das gedacht

    Kommentar


    • #17
      Falsch,
      1. Du weist $file ein Array zu und nicht dein Bild. $file=$_FILES['name_des_feldes']; wäre korrekt.
      2. das stimmt, $file2 ist nun ein "Zufallswert"
      3. stimmt wieder nicht. $file ist, wenn du es wie in 1. zuweist, wieder ein Array. Du musst $file['name']; verwenden um den Dateinamen zu verwenden.

      Kommentar


      • #18
        Original geschrieben von matze|p
        Falsch,
        1. Du weist $file ein Array zu und nicht dein Bild. $file=$_FILES['name_des_feldes']; wäre korrekt.
        2. das stimmt, $file2 ist nun ein "Zufallswert"
        3. stimmt wieder nicht. $file ist, wenn du es wie in 1. zuweist, wieder ein Array. Du musst $file['name']; verwenden um den Dateinamen zu verwenden.
        hmm also wäre

        PHP-Code:
        $file2 rand(1,100);
        rename($_FILES['userfile'], $file2);

         
        //oder eben

        $file $_FILES['userfile'];
        $file2 rand(1,100);
        rename($file$file2); 
        korrekt? leider krieg ich da auch einen fehler


        Notice: Array to string conversion in /srv/www/vhosts/xxxxx.de/httpdocs/COG-V.2/code/upload2.php on line 36

        Warning: rename(Array,14): No such file or directory in /srv/www/vhosts/xxxxx.de/httpdocs/COG-V.2/code/upload2.php on line 36

        Kommentar


        • #19
          jetzt guck dir doch mal den aufbau von $_FILES an. dann wist du sehen, dass $_FILES['userfile'] immernoch ein array ist.

          und die dateiendung hast du auch noch nicht.

          Kommentar


          • #20
            Original geschrieben von TobiaZ
            jetzt guck dir doch mal den aufbau von $_FILES an. dann wist du sehen, dass $_FILES['userfile'] immernoch ein array ist.

            und die dateiendung hast du auch noch nicht.
            *auf kopf klatsch*

            stimmt! hab mir das mal ausgeben lassen

            Array ( [userfile] => Array ( [name] => 03.jpg [type] => image/jpeg [tmp_name] => /tmp/phptYGZDh [error] => 0 [size] => 5508 ) )

            demnach müsste doch das korrekt sein

            PHP-Code:
            $file2 rand(1,100);
            rename($_FILES['name'], $file2); 
            aber dann ist das dass ergebniss:


            Notice: Undefined index: name in /srv/www/vhosts/city-of-gfx.de/httpdocs/COG-V.2/code/upload2.php on line 36

            Warning: rename(): Unable to access in /srv/www/vhosts/city-of-gfx.de/httpdocs/COG-V.2/code/upload2.php on line 36

            was will mir Undefined index sagen?

            Kommentar


            • #21
              @ DLR:
              Erst denken, dann Coden. Jetzt hast du wieder etwas durcheinander gebracht:

              PHP-Code:
              $file=$_FILES['feldname'];
              $file2 rand(1,100);
              rename($file['name'], $file2); 
              ist korrekt. Allerdings fehlt dir, wie TobiaZ sagte, die Dateiendung für $file2.

              Kommentar


              • #22
                Na, dass der Index name nicht existiert. Tut er ja auch nicht. Jetzt nimm dir doch kurz Zeit das ganze zu verstehen. du musst nicht so schnell fragen, wie wir antworten.

                Kommentar


                • #23
                  Original geschrieben von TobiaZ
                  du musst nicht so schnell fragen, wie wir antworten.
                  ok! hab jetzt nochmal ernsthaft nachgedacht ! Hab auch teilweise erfolg!

                  so sieht es jetzt aus
                  PHP-Code:
                  if (file_exists($path $HTTP_POST_FILES['userfile']['name']))
                  {
                  $file $_FILES['userfile'];
                  $file2 rand(1,100);
                  rename($file['name'],$file2.$file['name']);
                  print_r($_FILES);

                  der fehler lautet dann wie folgt
                  [i]Warning: rename(03.jpg,1803.jpg): No such file or directory in /srv/www/vhosts/xxxxx.de/httpdocs/COG-V.2/code/upload2.php on line 29/i]

                  mein teilerfolg: wie man aus der fehlermeldung sehen kann wird die datei erfolgreich unbenannt!

                  Kommentar


                  • #24
                    Mit file_exists($path.$HTTP_POST_FILES['userfile']['name']) prüfst du zwar, ob die Datei existiert, aber umbenennen willst du eine andere.

                    $file['name'] ist nämlich nur dann das selbe wie
                    $path.$HTTP_POST_FILES['userfile']['name'],
                    wenn $file == $HTTP_POST_FILES['userfile'] (was bei dir dank eines glücklichen Umstands noch zutrifft) und $path == '' ist.

                    Lies vielleicht mal http://de.php.net/manual/en/features.file-upload.php

                    Kommentar


                    • #25
                      Original geschrieben von onemorenerd
                      Mit file_exists($path.$HTTP_POST_FILES['userfile']['name']) prüfst du zwar, ob die Datei existiert, aber umbenennen willst du eine andere.

                      $file['name'] ist nämlich nur dann das selbe wie
                      $path.$HTTP_POST_FILES['userfile']['name'],
                      wenn $file == $HTTP_POST_FILES['userfile'] (was bei dir dank eines glücklichen Umstands noch zutrifft) und $path == '' ist.

                      Lies vielleicht mal http://de.php.net/manual/en/features.file-upload.php
                      >.< das da noch $path reinmusste wusste ich! hab ich auch gemacht aber dann hat er die datei einfach hochgeladen und es stand dran datei x.jpg erfolgreich hochgeladen! da aber im quelltext steht
                      PHP-Code:
                      echo "Datei : ".$HTTP_POST_FILES['userfile']['name']." hochgeladen<br>\n"
                      stand immer noch der alte name dran obwohl das rename geklappt hatte! jetzt wo ich auf den server geguck hab hab ichs erst gemerkt xD danke euch allen!

                      Kommentar


                      • #26
                        achso sry für doppeltpost aber ne kleine frage hab ich noch, gibts ne möglichkeit in der ausgabe zu beachten das der name unbennat wurde? würde gerne sowas machen

                        PHP-Code:

                        if(rename) {

                        echo 
                        "Vielen Dank! Ihre datei heisst ".$file2.$file['name']."";
                        }
                        else{
                        echo 
                        "Vielen Dake! Ihre datei heisst ".$HTTP_POST_FILES['userfile']['name']."";

                        weil sonst wird immer noch der alte dateiname ausgegen, auch wenn die datei unbennant wurde! der fehler kommt bei meinem code:


                        Notice: Use of undefined constant rename - assumed 'rename' in /srv/www/vhosts/xxxx.de/httpdocs/COG-V.2/code/upload2.php on line 50

                        Vielen Dank! Ihre datei heisst

                        Kommentar


                        • #27
                          zu deiner Frage:
                          Du kannst doch nicht einfach eine leere Funktion nutzen... Kopier den Wert von rename beim Umbenennen in eine Variable und vergleich dann diesen Wert.

                          Und verwende $_FILES $_HTTP_POST_FILES ist veraltet und sollte nicht mehr genutzt werden.

                          Kommentar


                          • #28
                            Original geschrieben von matze|p
                            zu deiner Frage:
                            Du kannst doch nicht einfach eine leere Funktion nutzen... Kopier den Wert von rename beim Umbenennen in eine Variable und vergleich dann diesen Wert.

                            Und verwende $_FILES $_HTTP_POST_FILES ist veraltet und sollte nicht mehr genutzt werden.
                            hmm wenn ich

                            PHP-Code:
                            if (file_exists($path $HTTP_POST_FILES['userfile']['name']))
                            {
                            $test rename($path $file['name'],$path $file2.$file['name']);



                            und
                            PHP-Code:
                            if($test){
                            echo 
                            "neu";
                            }
                            else{
                            echo 
                            "alt";

                            mache, dann geht das zwar wenn die datei umbenannt wird, wenn aber die datei nicht umbennant wird kommt undifinierte variable!

                            Kommentar


                            • #29
                              if (isset($test) && $test == true))

                              oder davor $test = false;
                              Für Rechtschreibfehler übernehme ich keine Haftung!

                              Kommentar


                              • #30
                                was soll eigentlich copy und rename?
                                move_uploaded_file() ist für das verschieben und umbenennen von upload-files gedacht gedacht.

                                Kommentar

                                Lädt...
                                X