Jak wyświetlić zawartość katalogu jako linki służące do pobrania plików, PHP Skrypty


[PHP] Jak wyświetlić zawartość katalogu jako linki służące do pobrania plików?

0x01 graphic

Chcesz pobrać zawartość katalogu i pokazać pliki w postaci linków.

0x01 graphic

Jeżeli udostępniasz dużo plików do pobrania nie warto ręcznie tworzyć odnośników do każdego z nich. Za pomocą skryptu możesz automatycznie pobrać zawartość katalogu, posortować go i wypisać na ekranie nazwy plików podlinkowane w taki sposób, że od razu można je pobrać z Twojego serwisu.

Mało tego - możesz pokazać tylko wybrane pliki, np. z rozszerzeniem .zip lub innym. Skrypt jest więc bardzo elastyczny i wygodny w użyciu. Zobacz jak wygląda:

<?

$sciezka = "katalog/do/plikow/";

$lista=array();

$katalog = opendir($sciezka);

while ($plik = strtolower(readdir($katalog))) {

if (($plik<>".")&&($plik<>"..")) if(!is_dir($sciezka.$plik))

$lista[]=$plik;

}

closedir($katalog);

sort($lista);

for ($i=0;$i<count($lista);$i++) {

echo "<br><a href=\"/sciezka/$lista[$i]\">$lista[$i]</a>";

}

?>

Dokładny opis jak odczytywać katalog znajdziesz w osobnej poradzie, do której odnośnik znajduje się na końcu tekstu. Zasada skryptu jest niemal taka sama. Odczytujemy katalog, sprawdzamy czy istnieje plik i wypisujemy go na ekran z dodanym linkiem, czyli ścieżką URL do niego.

Ważne jest poprawne określenie katalogów. Zmienna $sciezka na górze skryptu określa ścieżkę do katalogu zapisaną według katalogów znajdujących się na dysku serwera. Z kolei ścieżka z adresu WWW na dole skryptu jest ścieżką, jaką widzi użytkownik w przeglądarce. Pierwsza ścieżka nie musi więc odpowiadać drugiej, a często są to zupełnie inne ścieżki.

Skrypt można łatwo rozbudować o pokazywanie tylko takich plików, które mają rozszerzenia spełniające nasze wymagania, np. chcemy pokazać tylko pliki .zip i .exe:

<?

$sciezka = "./";

$lista=array();

$katalog = opendir($sciezka);

while ($plik = strtolower(readdir($katalog))) {

if (($plik<>".")&&($plik<>"..")) {

if(!is_dir($sciezka.$plik) and eregi("(\.exe|\.zip)",$sciezka.$plik)) {

$lista[]=$plik;

}

}

}

closedir($katalog);

sort($lista);

for ($i=0;$i<count($lista);$i++) {

echo "<br><a href=\"/sciezka/$lista[$i]\">$lista[$i]</a>";

}

?>

Funkcja eregi() filtruje pliki i przepuszcza tylko te, które zawierają podane nazwy. W naszym wypadku są to rozszerzenia plików, ale mogą to być także fragmenty nazw plików.

0x01 graphic



Wyszukiwarka