tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
282
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    l0c4lh05t l0c4lh05t ist offline Mitglied Gold
    Registriert seit
    Nov 2006
    Beiträge
    200
    Hi!
    Also mal angenommen ich habe mir ein Upload-Skript geschrieben, welches die hochgeladenen Dateien unter dem Namen abspeichert, mit dem sie hochgeladen wurden. Und, nur mal so angenommen, es wird eine Datei mit dem Namen "hallowelt.txt" hochgeladen. Wie prüfe ich, ob die Datei (ggf. mehrfach) vorhanden ist und wie bennene ich die Datei dann am geschicktesten in "hallowelt.1.txt" bzw. "hallowelt.2.txt" (usw.) um?
    Ich komme mir, mit meiner Lösung, total dumm vor... wie würdet ihr das machen?
     


  2. #2
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    mit file_exists kannst Du prüfen, ob es schon eine Datei unter dem Namen gibt. Wenn ja, dann durchläufst Du halt so lange eine Schleife über sagen wir mal $i, bis $name_ohne_suffix . "." . $i . $suffix nicht vorhanden ist.
    Wie sah Deine Lösung denn aus?

    LG
     

  3. #3
    R00Ki3 R00Ki3 ist offline Mitglied Gold
    Registriert seit
    Oct 2004
    Ort
    NRW
    Beiträge
    247
    zur kontrolle ob eine Datei bereits existiert ist die funktion file_exists($filename);

    Hier nen Beispiel wie man es lösen kann
    PHP-Code:
    if(file_exists($filename)){
      
    $i=1;
      
    $newfile $i.$filename;
      while(
    file_exists($newfile)){
        
    $i++;
        
    $newfile=$i.$filename;
      }
      
    $filename $newfile;

    mehr infos dazu unter:
    http://de.php.net/manual/de/control-...ures.while.php
    http://de.php.net/manual/de/function.file-exists.php
     

  4. #4
    Avatar von maeTimmae
    maeTimmae maeTimmae ist offline Mitglied Platin
    Registriert seit
    Aug 2007
    Ort
    Erfurt, Saarbrücken, Leipzig und Fulda
    Beiträge
    515
    PHP-Code:
    <?php

    function getNewFilename$path ) {
        
    // Cache leeren
        
    clearstatcache();
        
    // $filepath beinhaltet den Originalen Dateinamen inklusive Pfadangabe

        
    if ( file_exists"$path) ) {
            
    // Pfadinformationen abrufen
            
    $info      pathinfo$path );
            
    $directory $info['dirname'];
            
    $extension $info['extension'];
            
    $filename  $info['filename'];
            
    // PHP < 5.0 Workaround: $filename  = substr( $info['basename'], 0, - strlen( $extension ) );
        
            
    for ( $i 1/* ... */ ; ++$i ) {
                if ( !
    file_exists"{$directory}{$filename}({$i}){$extension}) ) {
                    return 
    "{$directory}{$filename}({$i}){$extension}";
                }
            }
        }

        return 
    "$path";
    }
    Whoops, hab es mit Klammern statt der Punkte im Beispiel gemacht, aber sollte leicht zu ändern sein
    Alternativ kann man das Pattern auch vereinheitlichen mit sprintf, aber das macht für den Moment zu viel Schreibarbeit.
     

  5. #5
    l0c4lh05t l0c4lh05t ist offline Mitglied Gold
    Registriert seit
    Nov 2006
    Beiträge
    200
    Wow, danke für die Antworten. Nichts für ungut, aber die von R00Ki3 kam meiner schon ziemlich nahe.
    Echt sehr nett, weiter so
     


Ähnliche Themen

  1. Batch - bestimmtes Datum für alle Dateien mit gleichen Namen
    Von rkrause787878 im Forum Sonstige Sprachen
    Antworten: 5
    Letzter Beitrag: 02.12.10, 15:32
  2. Batch - bestimmtes Datum für alle Dateien mit gleichen Namen
    Von rkrause787878 im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 29.11.10, 19:40
  3. Antworten: 6
    Letzter Beitrag: 01.06.06, 09:29
  4. Werteübergabe bei mehreren gleichen Feldern
    Von devconproductions im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 23.02.06, 19:41
  5. TreeMap mit mehreren gleichen Keys
    Von wSam im Forum Java
    Antworten: 4
    Letzter Beitrag: 08.02.06, 15:40