Dateipfad ermitteln

dark_ghost

Erfahrenes Mitglied
Hallo zusammen,

ich arbeite gerade an einem kleinen Script, das eine Datei einliest verschiedene Aufgaben erledigt und die Datei anschließend unter einem neuen Namen wieder speichert.

Um dem Script mitzugeben welche Datei bearbeitet werden soll, habe ich ein Formular erstellt über das die Datei ausgewählt werden kann.

Code:
<form enctype="multipart/form-data" action="changetext_2.php" method="post">
    <input type="file" name="file"><br />
    <input type="submit" name="submit">
</form>

Um jetzt die Datei ansprechen zu können benötige ich den kompletten Dateipfad, denn es ist ja nicht sichergestellt, dass sich die gewählte Datei im selben Verzeichnis befindet wie das Script.

Wie aber ermittle ich den gesamten Dateipfad ?

Angenommen der Dateipfad lautet: C:\Programme\Internet\htdocs\projekte\datei.txt
Dann würde mir folgende Anweisung -> $filename = $_FILES['file']['name']; nur datei.txt liefern.

Wäre super wenn ihr nen Tipp hättet, danke.
Gruß
 
Hallo,

ich benötige ja nicht nur den Verzeichnisnamen sondern den kompletten Pfad zur Datei.

Wenn ich über dieses Formular eine Datei auswähle, dann wird der komplette Dateipfad in das Formularfeld geschrieben. Nach dem Senden des Formulars möchte ich dann diesen Pfad ja auch wieder auslesen. Mit meiner oben genannten Anweisung bekomme ich aber leider nur den Dateinamen und nicht den kompletten Pfad.

Gruß
 
Hi,

verstehe ich das richtig, dass du die Datei, die der Client hoch lädt, modifizieren möchtest und dann im genau den selben Pfad, wo die Datei vom Client angegeben wurde speichern möchtest? Ich glaube kaum dass das geht. Weiterhin solltest du dir im klaren sein, dass Daten in
PHP:
 $_FILES[]
gefälscht sein können, da sie vom Client kommen.
Wo die Dateien auf dem Server gespeichert werden, wird in der php.ini unter dem Stichwort upload_tmp_dir festgelegt.
Falls du ein anderes Ziel verfolgst erkläre bitte nochmal dein Vorhaben, habe ich noch nicht so ganz verstanden ;-)
 
Hi,

ok anscheinend habe ich mich nich richtig ausgedrückt :( sry.


Ziel der ganzen Sache ist es mit Hilfe eines php-Scriptes eine Datei zu bearbeiten, also bestimmte Strings ersetzen, bestimmte Zeichen löschen, etc.

Jetzt müsste ich ja jedesmal den kompletten Dateipfad eingeben, damit ich auf die Datei zugreifen kann. Damit ich mir das ersparen kann, habe ich das Formular erstellt, über das man die Datei einfach auswählen kann. Das einzige was ich dann brauche ist der Dateipfad um auf die Datei zugreifen zu können, mehr nicht. Ich will weder die Datei hochladen noch sonst irgendwas, nur der Dateipfad zum weiteren bearbeiten der Datei :)

Mein Problem ist, dass ich nicht weiß wie ich nach absenden des Formulares im Script den Dateipfad auslesen kann, da anscheinend nur der Dateiname übergeben wird bzw. ich die falsch Abfrage stelle.

Ich hoffe ich konnte es diesmal richtig ausdrücken, wenn nich nochmal nachhaken! ;)

Gruß
 
Zuletzt bearbeitet:
Nun gut ich denke die Problemschilderung war meinerseits eher dürftig aber ich finde auch keinen anderen Weg dieses Problem zu schildern.

Ich habe das ganze nun folgendermaßen gelöst:
Die entsprechende Datei wird über das Formular ausgewählt und dann in ein Temp.Verzeichnis kopiert. Anschließend wird diese eingelesen, bearbeitet und unter neuem Namen wieder gespeichert. Die alte Datei(im TempVerz.) kann somit gelöscht werden.

Diese Variante funktioniert und erfüllt ihren Zweck,
Mich würde nur interessieren wie ich dann mein geschildertes Problem hätte lösen können :) ...
Eine Datei über ein Auswahlfeld auswählen und dann nach absenden des Formulares den kompletten Relativen Pfad auslesen. ...(so wie er eben im formularfeld steht nachdem man die datei ausgewählt hat)


Greetz to all!
 
Eine Möglichkeit wäre nach dem absenden des Formulars,
die Datei mit einer rekursiven Funktion zu suchen und
Dir dann den kompletten Pfad anzeigen zu lassen.
Eine weitere Möglichkeit bei mehrfachen Vorhandensein einer Datei
wäre mit "filemtime()" die Datei anzuzeigen die
den kleinsten Zeitunterschied zu der momentanen Zeit hat.


Beispiel:
PHP:
<?PHP
   
   function browser($foo,$bar)
   {       
      $path = opendir($foo);
      while($findnextfile = readdir($path))
      {
         if($findnextfile != '.' && $findnextfile != '..')
         {
            if(is_dir(is_dir($foo.'/'.$findnextfile))
            {
               browser($foo.'/'.$findnextfile,$bar);//Funktion rekursiv aufrufen!               
            }           
            else
            {
               if($findnextfile == $bar)
               {
                  if(is_file($foo.'/'.$findnextfile) && file_exists($foo.'/'.$findnextfile))
                  {
                     echo $foo.'/'.$findnextfile.'<br>'; // Ausgabe des Ergebnisses
                  }
               }
            }
         }           
      }
      closedir($path);   
   }

   $dir = '.'; // => http://www.meine-seite.de
   $search = 'index.php'; //Beispiel
   
   echo '<pre>';
   print_r(browser($dir,$search));
   echo '</pre>';
   
?>
 
Zuletzt bearbeitet:
Zurück