PHP Dateien aus PDF-Ordner auflisten

Jonas123

Ensign
Registriert
Mai 2008
Beiträge
209
Hallo,
ich bräuchte ein PHP Skript, das die Dateien aus einem FTP-Ordner (außer die index.php dazu) auflistet, und direkt auf diese Datei verlinkt.
Ich weiß, Google, aber da hab ich irgendwie nichts brauchbares gefunden...
lg

Titel soll heißen:
Dateien aus FTP-Ordner auflisten
 
Zuletzt bearbeitet:
Wenn du dein Problem bei Google verallgemeinerst (dem Script ist es egal ob es PDF-Dateien sind oder sonst was), dann dürftest du sicher was brauchbares finden.

Auf jeden Fall mach ich mir keine Mühe dir da was zu programmieren, was du nur deshalb nicht findest, weil du entweder falsch oder zu unmotiviert suchst...

2 Sekunden Google: "php dateien auflisten"
1. Treffer: http://www.devblog.de/index.php/archives/2005/06/01/37/
wenn das nicht schon mal ein brauchbarer Ansatz ist...
 
Zuletzt bearbeitet:
Hi,
hab jetz ein skript gefunden....
aber jetzt hab ich was merkwürdiges gefunden....
wenn ich bestimmte dateien auf meinen server lade, und die dann mit dem skript anzeigen lasse, draufklicke, dann steht da "404 Not Found"
Der Link passt aber 100%, wenn ich den link manuell in die leiste eingebe funtktionierts auch nicht....
das ist total verschieden....an was könnte das liegen??
lg

//EDIT: Kann euch auch gerne mal ein Beispiel zur Verfügung stellen...
 
Zuletzt bearbeitet:
Kann es sein das du Leerzeichen, Sonderzeichen oder ähnliches in deinem Link stehen hast?

Ansonsten wäre der Quelltext mit einem Teil der Ausgabe nicht schlecht.
 
Wäre nicht schlecht wenn du uns das wirklich mal als Beispiel zeigst....
am besten mit dem entsprechenden PHP-Code (also nur den wichtigen Teil)
 
berechtigungen könnten auch nen schöner fehler sein, welche nicht richtig gesetzt sind (befinden wir uns überhaupt in einer linux, oder windows umgebung?)
 
Hallo,
es handelt sich sowohl bei Namen mit Leerzeichen, als auch mit welchen ohne!
Hier mal das Beispiel (ohne Leerzeichen):
Hier der Quelltext:
Code:
<font face=Arial><center><u><b><font size=5pt color=red>Folgende Dateien sind auf dem Server vorhanden:</font></b></u><br /><br /><a href="Daten/Glücklich.pdf">Glücklich.pdf</a><br /></center></font>

Hier die PHP-Datei:
Code:
<?php
 echo '<font face=Arial><center><u><b><font size=5pt color=red>Folgende Dateien sind auf dem Server vorhanden:</font></b></u><br /><br />';
  $handle = opendir ("Daten/");
  if ($handle)  {
    while ($file = readdir($handle))  {
if($file != '.' && $file != '..') {
   printf('<a href="Daten/%s">%s</a><br />', $file, $file);
}  
    }
    closedir ($handle);
  }
// Ausgabe der Dateien

 print_r($filelist);
echo '</center></font>';
?>

Hier noch der Beweis, dass sich die Datei auf dem Server befindet:
Bild.jpg


lg
Jonas
 
Hi,
vielen dank, jetzt gehts!
kann man das jetzt noch irgendwie ändern, damit das auch mit umlauten klappt??
Ist nämlich ein bisschen nervig....hab das Skript eigentlich, damit ich auch mehrere Dateien schnell auf den Server laden kann, und ich nichts weiter machen muss....
lg
Jonas
 
Das einfachste ist du entfernst die Umlaute...
Schreib halt noch in das Script, dass Dateien (vorher) mit Umlauten automatisch umbenannt werden...
 
hi,
ja, sowas hab ich mir auch schon gedacht....
nur: ich kenn mich nicht wirklich mit php aus =(
kann vieleicht mal paar grundlagen...aber dazu reichts leider nicht!
könnte mir vieleicht jemand helfen :freaky:
lg
 
Grundlage dafür: http://de3.php.net/manual/de/function.rename.php

Habe diesen Code allerdings nicht getestet :-)
PHP:
// $filename kann ein String oder ein Array sein...
function RenameIfRequired($rootpath, $filename)
{
  $newfilename = str_replace(array('ä', 'ö', 'ü', 'A', 'Ö', 'Ü'), array('ae', 'oe', 'ue', 'AE', 'OE', 'UE'), $filename);
  if (is_array($filename)) {
    for ($i = 0; $i < count($filename); $i++) {
      if ($filename[$i] != $newfilename[$i]) {
        rename($rootpath.$filename[$i], $rootpath.$newfilename[$i]);
      }
    }
  } else {
    if ($newfilename != $filename) {
      rename($rootpath.$filename, $rootpath.$newfilename);
    }
  }
  return $newfilename;
}

// Alle Dateinamen in das Array $filelist holen
$rootpath = "Daten/";
unset($filelist);
$handle = opendir ($rootpath);
if ($handle) {
  while ($file = readdir($handle))  {
    // keine . und .. aufnehmen
    if (($file == '.') || ($file == '..')) continue;

    // keine PHP-Dateien aufnehmen
    if (strpos($file, ".php") !== false) continue;

    // Datei in Liste aufnehmen
    $filelist[] = $file;
  }
  closedir ($handle);
}
if ($filelist != null) $filelist = RenameIfRequired($rootpath, $filelist);

// Ausgabe der Dateien
echo '<font face=Arial><center><u><b><font size=5pt color=red>Folgende Dateien sind auf dem Server vorhanden:</font></b></u><br /><br />';
if ($filelist != null) foreach ($file in $filelist)  {
   printf('<a href="%s%s">%s</a><br />', $rootpath, $file, $file);
}  
echo '</center></font>';
 
Zuletzt bearbeitet:
Hi,
super, dass du dir die Mühe machst!
Aber leider gibt das Skript gar nichts aus, nicht mal das mit "Folgende Dateien sind auf dem Server vorhanden:"...
Ich denke es liegt an einer fehlenden Klammer oder einem ;
konnte aber nichts finden...
lg
 
bin ich jetzt komplett blöde??
mit dem kommt immer noch nichts raus :-o

Hier der code aus der index.php, nicht dass ich das auch noch falsch eingebunden habe...
Code:
<?php

error_reporting(E_ALL);
ini_set('display_errors', '1');  



// $filename kann ein String oder ein Array sein...
function RenameIfRequired($rootpath, $filename)
{
  $newfilename = str_replace(array('ä', 'ö', 'ü', 'A', 'Ö', 'Ü'), array('ae', 'oe', 'ue', 'AE', 'OE', 'UE'), $filename);
  if (is_array($filename)) {
    for ($i = 0; $i < count($filename); $i++) {
      if ($filename[$i] != $newfilename[$i]) {
        rename($rootpath.$filename[$i], $rootpath.$newfilename[$i]);
      }
    }
  } else {
    if ($newfilename != $filename) {
      rename($rootpath.$filename, $rootpath.$newfilename);
    }
  }
  return $newfilename;
}

// Alle Dateinamen in das Array $filelist holen
$rootpath = "Daten/";
unset($filelist);
$handle = opendir ($rootpath);
if ($handle) {
  while ($file = readdir($handle))  {
    // keine . und .. aufnehmen
    if (($file == '.') || ($file == '..')) continue;

    // keine PHP-Dateien aufnehmen
    if (strpos($file, ".php") !== false) continue;

    // Datei in Liste aufnehmen
    $filelist[] = $file;
  }
  closedir ($handle);
}
if ($filelist != null) 	{
$filelist = RenameIfRequired($rootpath, $filelist);
}

// Ausgabe der Dateien
echo '<font face=Arial><center><u><b><font size=5pt color=red>Folgende Dateien sind auf dem Server vorhanden:</font></b></u><br /><br />';
if ($filelist != null) foreach ($file in $filelist)  {
   printf('<a href="%s%s">%s</a><br />', $rootpath, $file, $file);
}  
echo '</center></font>';  

error_reporting(E_ALL);
ini_set('display_errors', '1');  

?>

lg
Jonas
 
solltest die reporting sachen auch an den anfang des scirpt machen :-)
edit: Mist haste ja ^^

Edit2: Scheiss .net-Syntax von foreach :-)
so sollte es laufen:

PHP:
<?php
// $filename kann ein String oder ein Array sein...
function RenameIfRequired($rootpath, $filename)
{
  $newfilename = $filename;
  $newfilename = str_replace(array('ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü'), array('ae', 'oe', 'ue', 'AE', 'OE', 'UE'), $newfilename);
  // Diese Zeile hier nun ist die wichtige :-)
  $newfilename = str_replace(array('ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü'), array('ae', 'oe', 'ue', 'AE', 'OE', 'UE'), $newfilename);
  
  if (is_array($filename)) {
    for ($i = 0; $i < count($filename); $i++) {
      if ($filename[$i] != $newfilename[$i]) {
        rename($rootpath.$filename[$i], $rootpath.$newfilename[$i]);
      }
    }
  } else {
    if ($newfilename != $filename) {
      rename($rootpath.$filename, $rootpath.$newfilename);
    }
  }
  return $newfilename;
}

// Alle Dateinamen in das Array $filelist holen
$rootpath = "Daten/";
unset($filelist);
$handle = opendir ($rootpath);
if ($handle) {
  while ($file = readdir($handle))  {
    // keine . und .. aufnehmen
    if (($file == '.') || ($file == '..')) continue;

    // keine PHP-Dateien aufnehmen
    if (strpos($file, ".php") !== false) continue;

    // Datei in Liste aufnehmen
    $filelist[] = $file;
  }
  closedir ($handle);
}
if (isset($filelist)) $filelist = RenameIfRequired($rootpath, $filelist);

// Ausgabe der Dateien
echo '<font face=Arial><center><u><b><font size=5pt color=red>Folgende Dateien sind auf dem Server vorhanden:</font></b></u><br /><br />';
if (isset($filelist)) foreach ($filelist as $file)  {
   printf('<a href="%s%s">%s</a><br />', $rootpath, $file, $file);
}  
echo '</center></font>';  
?>
 
Zuletzt bearbeitet:
@1668mub: Stehen sie doch ;)

@ Jonas123: Was für einen Editor benutzt du um zu Programmieren.
Der sollte dir Syntaxfehler anzeigen.
 
Hi,
benutze Notepad++
Wo wird mir da ein Fehler angezeigt??
lg
 
Hi,
ja, jetzt läufts, aber...die Datei auf dem Server wird nicht umbenannt, und der Link zur Datei geht irgendwie auch nicht...
Sorry, wenn ich schon wieder irgendwas falsch verstanden habe...
lg
Jonas
 
Zurück
Oben