Mam witrynę ftp, która obsługuje kilka plików. Każdy plik jest sam w swoim folderze w katalogu głównym (przesyłanie), ze względu na ograniczenia wprowadzone przez oprogramowanie do pobierania, którego używamy (każdy plik musi mieć unikalną ścieżkę do pliku, a nazwa pliku musi być modpack.zip (nie bądź dowolną odmianą tej nazwy, musi mieć tę dokładną nazwę, dlatego każda wersja jest w swoim własnym podfolderze)
Muszę znaleźć sposób, aby wyświetlić listę wszystkich plikówwszystkie podkatalogi głównego folderu przesyłania w tabeli, a także listę, jak duży jest każdy plik. Każdy plik musi mieć link do niego, a foldery nie muszą być wyświetlane.
Kod, który mam do tej pory jako punkt wyjścia, to:
<div id="list"><table>
<tr><td align="center">Modpack List</td></tr>
<?php
$dir_open = opendir("uploads/");
while(false !== ($filename = readdir($dir_open))){
$bytes = filesize($_SERVER["DOCUMENT_ROOT"]."/uploads/".$filename."");
if($filename != "." && $filename != ".."){
echo "<tr><td><a href="/uploads/".$filename."">".$filename."</a> - ".bytesToSize($bytes)."</td></tr>";
}
}
closedir($dir_open);
?>
</table>
</div>
Próbowałem użyć readdir () i scandir (), alezarówno lista plików, jak i podfolderów, których nie chcę, a bieżąca konfiguracja wyświetla tylko pliki i foldery znajdujące się bezpośrednio pod / uploads i nie będzie wyświetlać żadnych plików w podfolderach, chyba że kliknę folder, który zajmuje na stronę FTP tego folderu.
Próbowałem kilku opublikowanych rozwiązań, które widziałemtutaj, jak również na innych stronach, ale żadna z nich nie zrobiła tego, czego potrzebowałem, i nie potrafię wymyślić, jak sprawić, by pomijał foldery jako linki i tylko wymieniał pliki.
Odpowiedzi:
0 dla odpowiedzi № 1Spróbuj użyć glob ():
<?php
foreach(glob("path-to/UPLOAD_FOLDER/*") as $subDirectory) {
foreach(glob($subDirectory"./*") as $file) {
// do what you want with file here... example:
$file_list .= $file."<br>";
}
}
echo $file_list;
?>