ďťż
Podstrony
|
telcocafeJaki skrypt należy napisać w php, aby utworzyć listę plików zawartych w danym katalogu?? Mam ich tam z 500 i chciałbym mieć listę z nazwami plików :)PS. Znalazłem fajny hosting :D www.quotaless.com 0 ograniczeń w miejscu i transferze :) Jedyne ograniczenie to, to że nie można wszucać plików *.exe MySQL databases used: 1/2147483647 MySQL users: 1/2147483647 :P tak samo sie ma transfer i miejsce (w MB) Użytkownik Cap!te(L) edytował ten post 24 styczeń 2007, 11:04 <?php $path_up='./data/'; $dir = opendir($path_up); $nr=0; $nrs=0; $sizea=0; if(isset($_GET['del_up'])) { $del_up=$_GET['del_up']; if($del_up=='all') { while ($file_up = readdir($dir)) { if (is_file($path_up.$file_up)) unlink($path_up.$file_up); } closedir($dir); echo('<script language="javascript" type="text/javascript">'."\n"); echo('<!-- <![CDATA['."\n"); echo('document.location="index.php?show=upload";'."\n"); echo('// ]]> -->'."\n"); echo('</script>'."\n"); } else unlink($path_up.$del_up); } ?> <h2>Upload plików na serwer</h2> <hr /> <form action="index.php?show=upload_save" method="post" enctype="multipart/form-data"> <input type="hidden" id="MAX_FILE_SIZE" name="MAX_FILE_SIZE" value="200000" /> Plik:<br /> <input id="UploadedFile" name="UploadedFile" type="file" size="40" /> <br /><br /> <input type="submit" value="Zapisz na serwerze" /> </form> <hr /> <?php echo('<h3>Zawartość folderu data:</h3>'."\n"); echo('<table width="100%"><tr><td>Nr</td><td>Nazwa</td><td>Rozmiar< /td><td>Usuń</td></tr>'."\n"); while ($file_up = readdir($dir)) { if (is_file($path_up.$file_up)) { $size=filesize($path_up.$file_up); $sizea+=$size; if ($size<1024) { $size.=' bajtów'; } elseif ($size>=1024) { $size/=1024; $sizen=explode('.', $size); $size=$sizen[0].' KB'; } $file_up_n=str_replace(' ','%20',$file_up); $nr++; echo('<tr><td>'.$nr.'</td><td><a href="'.$path_up.$file_up_n.'">'.$path_up.$file_up.' </a></td><td>'.$size.'</td><td><a href="index.php?show=upload&del_up='.$file_up_n.'">Usuń</a> </td></tr>'."\n"); } } closedir($dir); if ($sizea<1024) $sizea.=' bajtów'; elseif ($sizea>=1024*1024) { $sizea/=1024*1024; $sizean=explode('.', $sizea); $sizea=$sizean[0].' MB'; } elseif ($sizea>=1024) { $sizea/=1024; $sizean=explode('.', $sizea); $sizea=$sizean[0].' KB'; } echo('<tr><td></td><td></td><td>'.$sizea.'</td> <td><a href="index.php?show=upload&del_up=all" onclick="if (!confirm(\'Czy usunąć wszystkie pliki?\')) return false;">Usuń wszystko</a></td></tr></table>'); ?> Mój stary skrypt... Może się przyda. Odczytuje zawartość katalogu, i dodatkowo podaje wielkość plików. Użytkownik andrzej_aa edytował ten post 24 styczeń 2007, 11:05 Zmienne mam pozmieniać, jak tak to które?? :> <?php $path_up='./data/'; // katalog $dir = opendir($path_up); $nr=0; $nrs=0; $sizea=0; if(isset($_GET['del_up'])) { $del_up=$_GET['del_up']; if($del_up=='all') { while ($file_up = readdir($dir)) { if (is_file($path_up.$file_up)) unlink($path_up.$file_up); } closedir($dir); header('Location: ?'); } else unlink($path_up.$del_up); } ?> <h2>Upload plików na serwer</h2> <hr /> <form action="?" method="post" enctype="multipart/form-data"> <input type="hidden" id="MAX_FILE_SIZE" name="MAX_FILE_SIZE" value="200000" /> <!-- wielkość pliku --> Plik:<br /> <input id="UploadedFile" name="UploadedFile" type="file" /> <br /><br /> <input type="submit" value="Zapisz na serwerze" /> </form> <hr /> <?php echo('<h3>Zawartość folderu data:</h3>'."\n"); echo('<table width="100%"><tr><td>Nr</td><td>Nazwa</td><td>Rozmiar< /td><td>Usuń</td></tr>'."\n"); while ($file_up = readdir($dir)) { if (is_file($path_up.$file_up)) { $size=filesize($path_up.$file_up); $sizea+=$size; if ($size<1024) { $size.=' bajtów'; } elseif ($size>=1024) { $size/=1024; $sizen=explode('.', $size); $size=$sizen[0].' KB'; } $file_up_n=str_replace(' ','%20',$file_up); $nr++; echo('<tr><td>'.$nr.'</td><td><a href="'.$path_up.$file_up_n.'">'.$path_up.$file_up.' </a></td><td>'.$size.'</td><td><a href="index.php?show=upload&del_up='.$file_up_n.'">Usuń</a>< /td></tr>'."\n"); } } closedir($dir); if ($sizea<1024) $sizea.=' bajtów'; elseif ($sizea>=1024*1024) { $sizea/=1024*1024; $sizean=explode('.', $sizea); $sizea=$sizean[0].' MB'; } elseif ($sizea>=1024) { $sizea/=1024; $sizean=explode('.', $sizea); $sizea=$sizean[0].' KB'; } echo('<tr><td></td><td></td><td>'.$sizea.'</td> <td><a href="index.php?show=upload&del_up=all" onclick="if (!confirm(\'Czy usunąć wszystkie pliki?\')) return false;">Usuń wszystko</a></td></tr></table>'); ?> Odrobinę poprawiony ;) Wystarczy, że zmienisz $path_up. Przed chwilą przetestowałem... Działa :) Zaraz przetestuję ;) A zadziała jak przy normalnej próbie wejścia w katalog przez HTTP mam 403?? A jak nie to może jakiś skrypt co przez FTP pobiera info :) /Cały czas mam oczekiwanie na www......., więc chyba nie zadziała :( /Wkońcu się załadowało, ale pusto pokazuje :( Użytkownik Cap!te(L) edytował ten post 24 styczeń 2007, 11:16 Na yoyo.pl działa więc nie widzę przeciwwskazań ;) Co do FTP to nie wiem. jak cchesz wylistowac tylko pl iki uzyj globa $pliki = glob("katalog/*"); i do $pliki zostanie zapakowana tablica z alll nazwami plikow i scieszkami :> To i ja swoją metodę dam :P <? $curpath = './'; $dir = dir($curpath); while ($file = $dir->read()) { if (!is_dir($curpath.$file)) { #echo("<a href=\"$curpath$file\">$file</a><br>\r\n" ); echo("$file\r\n"); } } $dir->close(); ?> A jeśli nie chcesz tracić czasu na wylistowanie plików, tylko bezpośredni zapis listy do pliku to masz to: <? $curpath = './'; $plik = 'ls.txt'; $lista = ''; $dir = dir($curpath); while ($file = $dir->read()) { if (!is_dir($curpath.$file)) { $lista .= "$file\r\n"; } } $dir->close(); file_put_contents($plik,$lista); ?> Dj_ProG: Jeśli już korzystać z klasy dir, zalecane jest: while (false !== ($file = $dir->read())) To i ja dam jeszcze inny sposób, chociaż ten z glob jest najprostszy: $dir = opendir('katalog'); while(false !== ($file = readdir($dir))) { if($file != '.' && $file != '..') echo $file . '<br />'; } Co do file_put_contents, to ta funkcja dostępna jest od PHP5. file_put_contents_dla_PHP_4 Użytkownik Coldpeer edytował ten post 25 styczeń 2007, 15:14 iteratory i PHP5 a nie przestarzałe rozwiązania z PHP4 ;) Faktycznie, iteratory do tego to fajna sprawa :) W Twojej biblioteki znalazłem taki kod: foreach(new DirectoryIterator('./') as $entry) if(!$entry->isDot()) echo $entry->getFilename().'<br />'; Mam pytanie, czy użycie iteratorów jest szybsze np. od glob? W sumie przy ilości plików ~50 odczuwalnych różnic nie ma z tego co widzę. PS. Można też użyć funkcji scandir: foreach(scandir('katalog') as $file) if($file != '.' && $file != '..') echo $file . '<br />'; Użytkownik Coldpeer edytował ten post 25 styczeń 2007, 15:59 Iteratory są czystszym i nowszym rozwiązaniem. Dodatkowo iterator nie pobiera od razu wszystkich danych - dopiero w czasie iteracji na bieżąco są one pobierane. Ale normalnie przez stronkę nie ma dostępu do katalogu, bo inaczej bym nie prosił o takie cos ;) Jest coś co pobiera listę plików z FTP? I generuje ne jej podstawie listę? Ale normalnie przez stronkę nie ma dostępu do katalogu, bo inaczej bym nie prosił o takie cos ;) No jak nie... Jest coś co pobiera listę plików z FTP? I generuje ne jej podstawie listę? Do tego jest bodajże funkcja ftp_nlist. Użytkownik Coldpeer edytował ten post 25 styczeń 2007, 17:08 |
|||
Sitedesign by AltusUmbrae. |