Datei vor upload in festgelegten Dateinamen umbenennen

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

  • Datei vor upload in festgelegten Dateinamen umbenennen

    hey!

    Ich möchte mit einem uploadscript dateien hochladen. Diese Dateien sollen ihren Dateinamen durch Nummern ersetz bekommen, die sich durch die Anzahl der schon vorhandenen Dateien errechnen...

    001.jpg
    002.jpg
    003.jpg
    004.jpg

    wird eine Datei hochgeladen (hallo.jpg) soll diese sozusagen vor dem upload zu 005.jpg umbenannt werden, weil dies die zahl ist die als nächstes folgt... Zusätzlich sollen dann noch alle Dateinamen in eine Textdatei gespeichert werden...
    PHP-Code:
    $count count(file("datei.txt"));
    $dateiname sprintf("%03d"$count+1); 
    Jetzt habe ich mit hilfe der Textdatei den nächsten Dateinamen bestimmt.

    Jetzt müsste ich irgendwie den dateinamen hallo.jpg splitten, so das ich einfach hallo durch 005 ersetzen kann. Diese Datei dann in dem Verzeichnis speichern und den entgültigen namen in der textdatei speichern...

    nur wie kann ich sowas realisieren?

    ich hab von dem befehl move_uploaded_file gelesen, aber so weit ich weiß, kann ich den nur bei Dateien benutzen, die schon hochgeladen wurden. Die dateien werden hochgeladen und dann umbenannt... oder seh ich das falsch? das problem wäre dann nur, das ich nicht einfach so den richtigen dateinamen in die textdatei bekomme...

    ich weiß nicht weiter!

    kann mir jemand helfen?

    Danke im Voraus!

    MFG Israel's Son

  • #2
    hallo,

    also ich nenne die datei bereits vor dem hochladen um.

    PHP-Code:
    ########## umbennen der Datei ##############
    echo("<input type=\"hidden\" name=\"newname\" value=\"".$id."_neu.pg\">");
                
    ?> 
    Statt dem .$id."_neu.jpg kannst du ha ohne weiteres deine zahlen verwenden.

    Kommentar


    • #3
      nicht gut, könnte ja auch den html code auf mein webspace hochladen und die zahlen bissl manipulieren!

      Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
      sondern mit den Augen das Manual zu lesen.

      Kommentar


      • #4
        Wenn du eine Datei durch ein Formular hochlädst, dann landet die eh erstmal unter einem von PHP vergebenen Namen in einem temporären Ordner. Aus diesem Ordner musst du sie dann mit move_uploaded_file an ihre endgültige Stelle verschieben. Dabei kannst du den Namen, den die Datei dann haben soll, frei auswählen.
        hopka.net!

        Kommentar


        • #5
          echo("<input type=\"hidden\" name=\"newname\" value=\"".$id."_neu.pg\">");
          ok die idee find ich garnicht mal so schlecht, da dieser Bereich eh mit passwort geschützt ist und nur ich dort daten hochladen kann, ist es egal ob man das über den quelltext ändern kann oder so...
          aber die sicherheitslücke mit dem quelltext ist natürlich auch gut zu wissen!

          au jeden fall, wenn ich ein sozusagen verstecktes Formularfeld (hidden) mit einem neuen Dateinamen mitschicke, muss ich ja die Dateiendung festlegen oder wie seh ich das?

          was ist wenn jemand .gif hochläd, ich aber .jpg in dem hidden teil eingebeen habe?

          würde zwar vom rein oberflächlichen her kein Problem sein, da auch Gif dateien problemlos mit der endung jpg funktionieren, solange keine animation in dem gif ist aber sonst nicht grade schön oder?

          wenn man das problem löst, dann muss ich ja irgendwie den "newname" gegen den "filename" austauschen, und wie mach ich das??

          da ja die dateien über

          <input type="file" name="file"> hochlade, oder müsste ich dort dann auch name="filename" eingeben?
          aber das führt sicherlich zu fehlern...

          oder soll ich die beiden namen im php script vertauschen?

          ich benutze dieses script

          PHP-Code:
          $pfad "images";
                
          $sizeabfrage "yes";
                
          $size "1048576";

                if (
          $file_name == "")
                  {
                    die(
          "Fehler: Du hast noch keine Datei von deiner Festplatte gewählt...");
                  }
                if (
          $sizeabfrage == "yes")
                  {
                    if (
          $file_size $size)
                      {
                        die(
          "Fehler: Die Datei ist zu groß! <br> Maximal 1 Mb erlaubt...");
                      }
                  }
                
          $upload "$file_name";
          @
          copy($file"$pfad/$upload") or die("Fehler: Dein Bild wurde nicht hochgeladen! ");
          echo 
          "<center>Dein Bild $upload wurde erfolgreich hochgeladen!"
          könnte ich dann einfach $upload="$newname" anstatt dem bisherigen $file_name nehmen?

          findet er denn dann überhaupt noch die datei die eigentlich hochgeladen wird, oder sucht er dann verzweifelt nach der "neuen datei"?

          hmm ich probier mal ein bischen was aus

          MFG Israel's Son

          Kommentar


          • #6
            Ich hab mal was ausporbiert!

            das funktioniert ziemlich gut

            seht ihr da irgendwelche lücken, dass irgendwo ein fehler auftreten könnte?

            also bei den tests hat alles super geklappt

            die Dateiendung wird einfach rausgefilter und an den neue ermittelten dateinamen angehängt und dann wird "file" ins verzeichnis kopiert mit dem namen $upload....

            PHP-Code:
            $endung substr ("$file_name", -4); 
            $count_db count(file("datei.txt"));
            $dateiname sprintf("%03d"$count_db+1);
            $upload "$dateiname$endung";
            @
            copy($file"$pfad/$upload") or die("Datei wurde nicht hochgeladen.");
            echo 
            "Datei $file_name wurde hochgeladen"

            Kommentar


            • #7
              Original geschrieben von Hopka
              Wenn du eine Datei durch ein Formular hochlädst, dann landet die eh erstmal unter einem von PHP vergebenen Namen in einem temporären Ordner. Aus diesem Ordner musst du sie dann mit move_uploaded_file an ihre endgültige Stelle verschieben. Dabei kannst du den Namen, den die Datei dann haben soll, frei auswählen.
              @israelsson:
              - Warum copy? und nicht bereits genanntes was viel besser ist?
              - Wenn copy nicht klappt und ich einen PHP Error bekomme dann trifft dein echo?
              [ ] zu
              [ ] nicht zu
              - Wo ist dein Fehlerhandling?
              - Bei dir ist register_globals == ?

              nachschauen und Script überarbeiten:
              http://de3.php.net/manual/de/features.file-upload.php
              [color=blue]MfG Payne_of_Death[/color]

              [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
              [color=red]Merke:[/color]
              [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

              Murphy`s Importanst LAWS
              Jede Lösung bringt nur neue Probleme
              Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
              In jedem kleinen Problem steckt ein großes, das gern raus moechte.

              Kommentar

              Lädt...
              X