Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyświetlenie zawartości katalogu - URL
Forum PHP.pl > Forum > Przedszkole
Frugolot
Witam,

Mam problem z przekazaniem zawartosci katalogu znajdującego sie na serwerze www. Chodzi mi o to, by kazdy plik ktory znajdzie się w katalogu był przekazany na strone www jako plik do pobrania. Potrafie wyswietlic cala zawartosc katalogu (wypisac liste plikow znajdujacych sie w nim) jednak nie mam pomyslu jak zrobic, by automatycznie, uzytkownik mogl kliknac i pobrac plik.

Z gory dziekuje za podpowiedzi.
com
Wydrukuj sobie te liste i w href znacznika a podajesz sciezke do pliku. A w htaaccess ustaw naglowek ze ma te pliki pobierac
Frugolot
Dziękuję za odpowiedź, ale chyba nie do końca o to mi chodziło.

Katalog który znajduje się na serwerze www będzie udziałem sieciowym w sieci lokalnej. Wielu użytkowników, którzy będą mieli do niego dostęp może skopiować tam plik. Chciałbym by każdy "wrzucony" tam plik został wyświetlony w pliku powiedzmy index.php, który także znajduje się w tym folderze i był możliwy po kliknięciu do pobrania przez stronę www.
NickOver
  1. $dir = opendir('NAZWA');
  2. while(false !== ($file = readdir($dir)))
  3. if($file != '.' && $file != '..')
  4. echo $file . '<br />';


To chyba najprostsze rozwiązanie. Oczywiście musisz dodać znaczniki <a></a> które najlepiej jakby były do osobnej strony pobierania.
Frugolot
Ok ten kod wyświetla mi zawartość folderu, jesli mam w nim pliki 1.png 2.png 3.png to wyswietla text:

1.png
2.png
3.png

Ja moze napisze caly proces mojego zamyslu:


Mam folder na serwerze o nazwie pliki, ktory jest udzialem sieciowym w sieci lokalnej. Wiele osob ma go zmapowanego na swoich komputerach.

Folder o nazwie pliki znajduje sie na maszynie, na ktorej jest serwer www i znajduje sie w obrebie katalogow serwera.

Chodzi mi o to, by pliki wrzucone do folderu bylo mozna pobrac. Jednak nie chce recznie edytowac pliku powiedzmy index.php i umieszczac odnosnikow, ale chcialbym zeby proces byl zautomatyzowany.

Czyli ktos wrzuca sobie tam plik tresc.docx i ten plik jest wczytywany na www a ktos kto wejdzie na nia moze sobie kliknac i pobrac

prosilbym o podpowiedz jak mozna to zrobic smile.gif
com
No przeciez wlasnie Ci to napisalem jak to masz zrobic, a kolega dal gotowy kod tylko nie dal znacznikow a o ktorych mowilem wiec sie nie da klikac. Dodaj i dodaj regulke do htaacess i gotowe smile.gif
Frugolot
Ok siedze siedze i przepraszam ale nie do końca rozumiem.

Utworzyłem stronę php na której mam wypisywaną zawartość interesującego mnie folderu. Strona to index.php

Na innej stronie (nowa.php) utworzyłem link a href, który wywołuje w nowym oknie strone index.php

W folderze jest tez plik .htaccess, tylko pytanie co powinno sie w nim znalezc?

Z gory dziekuje za pomoc.
com
http://funkcje.net/view/2/2280/index.html
tu masz caly gotowy skrypt smile.gif
tomek200
W pliku .htaccess dodaj cos takiego
Kod
AddType application/octet-stream .png
Frugolot
Dzięki za odpowiedzi.

Dodanie : AddType application/octet-stream .png nie pomogło

Dzięki za podesłanie skryptu ale z tego co widzę, bazuje on na liście plików uzupełnianej na bieżąco ręcznie, a nie dynamicznie, chyba, że zastosować kod php powinienem inaczej?

Dzięki za odpowiedzi.
com
Zamiast dodawania recznego uzyj kodu podanego powyzej przez jednego z forumowiczow a reszta tak jak tam byla smile.gif siedze na telefonie to na tym malym ekranie ciezko napisac Ci kod ale powinienes sobie poradzic z tym wrazie czego przyjdziesz z kodem ktory stworzysz i bd patrzec smile.gif
Frugolot
Na początku zwraca mi zawartość katalogu "pliki" a potem wypisuje :

"Nie ma takiego pliku na serwerze!"

  1. <?php
  2.  
  3. $dir = opendir('/xampp/htdocs/kierownicy/pliki');
  4. while(false !== ($file = readdir($dir)))
  5. if($file != '.' && $file != '..')
  6. echo $file . '<br />';
  7.  
  8. $filesPath = "/pliki/";
  9. function securityCheck($name)
  10. {
  11. $wyr = "^[a-z0-9_-]+(\.[a-z0-9_-]+)*$";
  12. return eregi($wyr, $name);
  13. }
  14. function send($fileName, $filePath)
  15. {
  16. if(!file_exists($filePath.$fileName)){
  17. echo('Nie ma takiego pliku na serwerze!');
  18. return;
  19. }
  20. $fd = fopen($filePath.$fileName,"r");
  21. $size = filesize($filePath.$fileName);
  22. $contents = fread($fd, filesize($filePath.$fileName));
  23.  
  24. fclose($fd);
  25.  
  26. header("Content-Type: application/octet-stream");
  27. header("Content-Length: $size;");
  28. header("Content-Disposition: attachment; filename=$fileName");
  29.  
  30. echo $contents;
  31. }
  32. if(isSet($_GET['name'])){
  33. if(!securityCheck($_GET['name'])){
  34. echo('Nie ma takiego pliku na serwerze!');
  35. }
  36. else{
  37. send($_GET['name'], $filesPath);
  38. }
  39. }
  40. else{
  41. echo('Nie ma takiego pliku na serwerze!');
  42. }
  43.  
  44.  
  45. ?>
tomek200
  1. $dir = opendir('/xampp/htdocs/kierownicy/pliki/');
na
  1. $dir = opendir('/pliki/');
bo w pliku w którym znajduje się skrypt szuka katalogu xampp
Frugolot
zmienilem na :

  1. $dir = opendir('pliki');


zwraca mi wtedy informacje:

plik2.zip - od siebie napisze ze jest to wynikiem wypisania zawartosci folderu pliki (w nim znajduje sie ten plik)
Nie ma takiego pliku na serwerze - po czym jest realizacja skryptu, gdzie mowa jest o braku pliku na serwerze

sadistic_son
Gotowy plik index.php
  1. <?
  2. //definiujemy ścieżkę do pliku (ścieżka serwera)
  3. $path = "/home/www/etc";
  4.  
  5. //otwieramy folder
  6. $dir_handle = @opendir($path) or die("Nie moge wczytać $path");
  7.  
  8. //wczytujemy zawartość
  9. while ($file = readdir($dir_handle)) {
  10.  
  11. //blokujemy wczytywanie ścieżek wyżej oraz pliku index
  12. if($file == "." || $file == ".." || $file == "index.php" )
  13.  
  14. continue;
  15. //wyświetlamy listę
  16. echo "<a href=\"$file\">$file</a><br />\n";
  17.  
  18. }
  19. //zwalniamy uchwyt
  20. closedir($dir_handle);
  21. ?>

Wzięte z pierwszego wyniku na google -> http://www.phpcodex.com/Jak-wyswietlic-zaw...logu,48,pl.html
Podmieniasz jedynie to: /home/www/etc na ścieżkę bezwzględną lub względną do Twojego katalogu. Dla przykładu jeśli Twój plik index.php znajduje się w tym katalogu to po prostu wstaw tam ../nazwa_katalogu czyli $path = "../nazwa_katalogu"; i tyle. Jeśli nie chcesz aby pliki np *.txt czy *.pdf otwierały się w przeglądarce to wystarczy powiedzieć wszystkim aby zapisywali je poprzez kliknięcie prawym w link i wybrali "zapisz element docelowy jako...".
Frugolot
Super, dzięki za pomoc, powyższy kod jest ok.

Cześć,

Chciałbym trochę rozszerzyć wątek, nie wiem czy mogę w tym samym temacie, ale spróbuję.

Czy jest możłiwość w php, dopisania kodu, aby po kliknięciu na jakikolwiek plik z listy, najpierw wyskakiwało użytkownikowi okienko w które coś może wpisać i ten wpisany przez niego tekst jest zapisywany do pliku powiedzmy *.csv w tym samym folderze?

Wiem, że jest możliwość wymuszenia logowania przy wejściu na stronę www przez uzupełnienie header, stad tez mozna wyswietlic okno z zamierzeniem czegos podobnego co chcialbym otrzymac.

Są też okienka typu prompt w java script, ale nie mam pomyslu jak to wcielic w moj kod. Prosiłbym o podpowiedz.
Ether
Może foreach (glob("*", GLOB_BRACE) as $files) i ustaw po prostu inne headery attachment itp.
Frugolot
Cześć,

wracam do wątku, ponieważ nie poruszam się biegle w php, poszukałem w internecie informacji jak mógłbym to zrobić,

Znalazłem kod :

<input type="button" id="prompt" value="Okienko Prompt" />

<script type="text/javascript">
function oknoPrompt() {
var imie = prompt('Podaj swoje imię:', 'Kartofel');
if (imie != null) {
alert('Witaj ' + imie);
} else {
alert('Anulowałeś akcję');
}
}

document.getElementById('prompt').onclick = function() {
oknoPrompt()
}
</script>

Ktory po nacisnieciu przycisku pozwala na wyswietlenie okienka, ale nie wiem ewentualnie jak go dopisac do mojego kodu, w ktorym klikajac na link do pliku na www ono sie pojawia, aktualny kod strony to :

  1. <?php
  2.  
  3. }
  4.  
  5. //definiujemy ścieżkę do pliku (ścieżka serwera)
  6. $path = "/xampp/htdocs/kierownicy/";
  7.  
  8. //otwieramy folder
  9. $dir_handle = @opendir($path) or die("Nie moge wczytać $path");
  10.  
  11. //wczytujemy zawartość
  12. while ($file = readdir($dir_handle)) {
  13.  
  14. //blokujemy wczytywanie ścieżek wyżej oraz pliku index
  15. if($file == "." || $file == ".." || $file == "index.php" )
  16.  
  17. continue;
  18. //wyświetlamy listę
  19. echo "<a href=\"$file\">$file</a><br />\n";
  20.  
  21.  
  22.  
  23. }
  24.  
  25.  
  26.  
  27.  
  28. //zwalniamy uchwyt
  29. closedir($dir_handle);
  30. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.