Dateiname ändern

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

  • Dateiname ändern

    Hi Leute,

    ich möchte denn Dateinamen ändern, aber leider funktioniert das nicht so wie ich das gern möchte.

    Der Befehl rename erzeugt bei mir folgenden Fehlermeldung:

    Code:
    Warning: rename(,1234) [function.rename]: No such file or directory in /homepages/31/d180125557/htdocs/kidscollege/admin_presse.php on line 75
    Und hier mein Code:

    PHP-Code:
    $ex           explode(".",$_FILES['presse_image']['name']);
    $name         rename($FILES['presse_image']['name'],"1234");    

    $new_name     $name.".".$ex[1]; 
    Wie könnte man es denn noch machen außer mit rename??

    MFG

  • #2
    Das sollte natürlich nicht an rename() liegen, sondern an den Parametern, die du der Funktion übergibst. Testausgaben gemacht?
    PHP-Code:
    echo $FILES['presse_image']['name']; 
    Code:
    Warning: rename(,1234)
    Sieht nämlich nach einem leeren ersten Parameter aus.

    Grüße
    Nieder mit der Camel Case-Konvention

    Kommentar


    • #3
      machste mal ein geschmeidiges print_r($_FILES)
      der fehler liegt daran, das der pfad zu deiner datei falsch ist =)
      edit:
      beim upload haste nämlich tmp_name und nicht name

      Kommentar


      • #4
        Für Uploads eh immer move_uploaded_file verwenden!

        Kommentar


        • #5
          Hi,

          move_upload_file habe ich drin, hab das nur nicht mit gepostet, weil erstmal ja keine Rolle spielt für die Namensänderung

          print_r gibt folgendes aus:

          Code:
          Array ( [presse_image] => Array ( [name] => bg_blue.jpg [type] => image/jpeg [tmp_name] => /tmp/phpJhDptd [error] => 0 [size] => 717 ) )
          und echo $FILES['presse_image']['name'] gibt dann halt denn Namen von den Bild aus bg_blue.jpg
          und was hat der Pfad damit zu tun?? wenn ich direkt auf $FILES['presse_image']['name'] zugreife?
          Falls du meintest das ich rename($FILES['presse_image']['tmp_name'],"1234"); schreiben soll das geht auch nicht!

          So richtig weiß ich noch nicht was ich falsch mache bzw. ändern muss...

          Kommentar


          • #6
            name ist der Dateiname auf dem Clientrechner. Für dich ist tmp_name entscheidend, dort liegt die Datei bei dir auf dem Rechner. Und für Uploads immer move_uploaded_file verwenden. Warum, steht in der Doku!

            Kommentar


            • #7
              ja über den Upload an sich und der funktioniert ja auch bei mir wunderbar, nur mir geht es darum denn Dateinamen zu ändern und explizit dazu steht nichts bzw. habe ich nichts dazu gefunden.
              Wenn es drin stehen sollte, dann wäre es schön wenn du mal ein kurzes Auszug hier posten könntest, das ich das auch finde...
              Ja das für mich tmp_name wichtig ist habe ich mittlerweile auch verstanden nur was mache ich mit der?
              Und ich verwende move_upload_file!!!

              Kommentar


              • #8
                Es fehlt ein Unterstrich ...

                Kommentar


                • #9
                  Also nochmal für die ganz dummen:

                  Wie lautet der Dateiname (und Pfad) der Datei die du umbenennen willst? In welcher Variable hast du das gespeichert?

                  Und wie soll die Datei in Zukunft lauten? Und der Pfad? Und in welcher Variable hast du das gespeichert?

                  PHP-Code:
                  $ex           explode(".",$_FILES['presse_image']['name']);
                  $name         rename($FILES['presse_image']['name'],"1234");    

                  $new_name     $name.".".$ex[1]; 
                  Du erstellst den neuen Namen erst NACHDEM du die Datei umbenannt hast? Warum???

                  Kommentar


                  • #10
                    es-fehlt-ein-Unterstrich

                    ... und abgesehen davon ist deine Umbenennungs-Funktion nicht besonders zukunftsssicher: Was passiert, wenn der Dateiname mehrere Punkte enthält, etwa so:

                    dokumentname.kopie1.txt


                    und brich mal deinen Code um, damit man keine horizontalen Scrollbalken kriegt!
                    Zuletzt geändert von pekka; 15.06.2008, 15:59.

                    Kommentar


                    • #11
                      Original geschrieben von pekka
                      es-fehlt-ein-Unterstrich
                      Das hätte ihm ein vernünftig eingestelltes error_reporting natürlich berichten können...

                      @BlackPerfekt:
                      Sowas ist wirklich überflüssig

                      Kommentar


                      • #12
                        Ja da hast du recht sry, aber daran lag es nicht,
                        also war zwar auch ein Fehler, aber da muss noch was
                        nicht gehen, hier mal denn kompletten Code, da ist auch
                        der Pfad mit angeben und alles.
                        Irgendwie ist heute nicht mein Tag...
                        PHP-Code:
                        <?php
                        session_start
                        ();

                        require_once(
                        "include/include_admin.php");
                        require_once(
                        'include/check_form.php');

                        $tmpl->setVar('admin_presse','tmpl/form_new_presse.html');


                        //Upload 
                            
                        if(isset($_POST['presse_anlegen']))
                            { 
                                 
                            
                        $ext_picture substrstrtolowerstrrchr($_FILES['presse_image']['name'], '.') ), );
                            
                        $picture_allowed_ext = array('jpg''png''gif');
                            
                        $folder_picture "files/presse/".$_FILES['presse_image']['name'];
                               
                        //Prüfe ob Endung erlaubt ist 
                            
                        if(!in_array($ext_picture$picture_allowed_ext))
                            {
                                
                                
                        $tmpl->setVar('ext_false_picture','Üngültige Endung von ihren Bild');
                            }
                              else 
                                {
                                
                        //Dateigröße prüfen 
                                
                        $int_max_filesize 2000000;
                                
                                if (
                        $_FILES['presse_image']['size'] > $int_max_filesize
                                {
                                    
                                    
                        $tmpl->setVar('false_size','Ihr Bild ist zu groß');
                                    
                                }
                                else 
                                {

                                    
                                    
                        $ex            explode(".",$_FILES['presse_image']['name']);
                                    
                        $name         rename($_FILES['presse_image']['tmp_name'],"1234".$ex[1]);    
                                    
                                    
                        move_uploaded_file($name$folder_picture);
                                }
                                }
                                }
                            
                        $tmpl->pparse();

                        ?>

                        Kommentar


                        • #13
                          Du machst immer noch den gleichen Fehler wie am Anfang.

                          rename lesen und verstehen!

                          Die Rückgabe von rename() ist ein boolean-Wert. Du behandelst ihn wie einen String, der einen Pfand beinhaltet...

                          Warum bist du eigentlich der Meinung, dass du rename überhaupt in deinem Code verwenden solltest? move_uploaded_file() sollte doch vollkommen reichen.
                          Zuletzt geändert von TobiaZ; 15.06.2008, 19:07.

                          Kommentar


                          • #14
                            weil ich mit rename Dateinamen ändern kann und dies will ich ja auch...
                            Naja mit rename das habe ich schon verstanden, also dachte ich zumindestens.
                            Bis jetzt habe ich gedacht der will nur folgendes haben:
                            rename(alter_name, neuer_name);
                            Und ich dachte das habe ich gemacht. Könntest du mich bitte mal aufklären was ich daran falsch sehe?

                            Und die Datei $_FILES['presse_image']['tmp_name'] ist ja erst dann in files/presse/ wenn der Befehl move_upload_file durchgelaufen ist daher habe ich das nicht mit angeben.
                            Und wie geht das ohne rename??
                            Erkläre mir das bitte mal, weil irgendwie verstehe ich das nicht. Weil so langsam haue ich hier alles durcheinander...
                            Sorry das ich mich so anstelle^^

                            MFG

                            Kommentar


                            • #15
                              also, kürzen wir es mal ab.

                              Bevor du die hochgeladene Datei nicht (mittels move_uploaded_file) in an ihre zielposition verschoben hast, darfst/kannst/sollst du sie nicht umbenennen. Sie existiert ja nur temporär im temp-Verzeichnis.

                              Also erst move_uploaded_file verwenden (wie dir von den anderen auch schon mindestens zwei mal gesagt wurde) und dann kannst du theoretisch die Datei umbenennen. Was natürlich überflüssig ist, weil du sie beim Verschieben ja schon umbenennen kannst (s. 2. Parameter von move_uploaded_file).

                              Kommentar

                              Lädt...
                              X