Ecco un comodo e leggero script php che permette il listing di una qualsiasi directory.

Per far funzionare questo script basta scaricarlo e uplodarlo nella directory di cui vogliamo avere un listing completo.
Ad ogni file associerà un’icona e segnalerà il peso e la data di creazione.

Per scaricare il relativo file basterà cliccare sull’icona del dischetto vicino al file.
Questo script risulta molto utile ad esempio quando dobbiamo rendere visibile il contenuto di una directory agli utenti.
Ovviamente lo script listerà tutti i files e le directory contenute tranne se stesso.

Inoltre a fine pagina lo script presenterà l’occupazione totale dei files nella directory.
Lo script puo essere facilmente customizzabile tramite css e il suo uso è completamente gratuito.
Nel sito dell’autore troverete anche dei semplici demo che dimostrano le funzionalità dello script

:: VAI AL SITO ::

18 Commenti

  1. Salve e complimenti peri il post e auguri di buon anno!
    anch’io non riesco a visualizzare… esce una schermata di codice..!!? premetto che lo ssto testando in locale con “wamp” + “wordpress”..!

    grazie mille

  2. ciao!
    io avrei un problema, non riesco a visualizzare lo script, prendo il file index.php lo inserisco nella cartella di esempio image, e quando lo apro con firefox mi restituisce una schermata di codice e non mi visualizza nessuna lista
    sapete aiutarmi??

  3. Salve a tutti, innanzitutto ringrazio per questo articolo perchè trovo questo script molto utile.

    Volevo chiedere se esiste un modo per aggiungere il contatore di downloads accanto ai link listati nella pagina.

    Grazie

  4. Ciao!!! ho sostituito come dici tu ma mi manca l’ultima parte “infine aggiungi la tipologia di immagine” e il risultato non cambia….Cosa devo fare per quello che mi suggerisci? scusami….ma avrai capito che non me ne intendo…

  5. mmmh il sistema mi nasconde i tag quindi provo a scriverli senza sintassi, all’inizio ed alla fine di ogni tag sostituisci maggiore con > e minore con <
    Questo è l'inizio del tuo header:
    minoreheadmaggiore
    minoremeta http-equiv="content-type" content="text/html; charset=utf-8" /maggiore

    prova a sostituirlo con questo:
    minoreheadmaggiore
    minoremeta http-equiv="X-UA-Compatible" content="IE=7" /maggiore
    minoremeta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"maggiore
    minoremeta http-equiv="Content-Type" content="image/png" /maggiore

    Ti faccio aggiungere la compatibilità per ie8
    ti faccio sostituire la codifica dei caratteri con quella europea se vedi che le lettere accentate vengono sostituite da caratteri strani rimetti il charset a utf-8, si vede che la collazione di mysql non supporta la codifica.
    infine aggiungi la tipologia di immagine, spero funzioni…

  6. intanto complimenti per la rapidità ed efficienza! Ho provato in mille modi ad attivare base64_decode ma non ho trovato da nessuna parte tale voce. solo nella configurazione globale-sistema ho trovato “Controllo MIME Types” ma era già attivo. Rimane un ultimo tentativo prima di mettere io manualemnte le singole icone am ho bisogno di una tua risposta su quello che ahi scritto: tra gli head devo riscrivere questo?
    // Set the mimetype and cache the image for a year so we don’t have to call them again.
    header(“Content-type: image/png”); # tipo immagine
    header(‘Expires: ‘ . gmdate(‘D, d M Y H:i:s’, time() + 60 * 60 *24 * 365) . ‘ GMT’); # cache immagine

  7. Presumo che dipenda dal fatto che hai fatto un’include in joomla! la ricerca dell’icona punta direttamente al file “contenutocartella.txt?image=pdf”, da qui ci sono due scuole di pensiero, la prima che php non ti interpreta correttamente il contenuto del file di testo incluso, ma lo ritengo poco probabile, in alternativa potrebbe darsi che in configurazione di joomla! o in phpini o nel server non hai abilitato le funzioni base64_decode, ovvero la modalità di traslitterazione delle immagini tipica della posta elettronica.

    Possibili suggerimenti:
    Nell’header della pagina mancano le righe per impostare il tipo MIME e la cache immagine anche se nello script ci sono e sono queste:
    // Set the mimetype and cache the image for a year so we don’t have to call them again.
    header(“Content-type: image/png”); # tipo immagine
    header(‘Expires: ‘ . gmdate(‘D, d M Y H:i:s’, time() + 60 * 60 *24 * 365) . ‘ GMT’); # cache immagine
    non vengono stampate nell’header, joomla dovrebbe restituirti un errore quando provi ad inserire nell’header una nuova riga, ma probabilmente viene intercettato e stampa la pagine senza le righe incriminate, comunque prova ad aggiungerle manualmente.

    Se ancora non funziona e non riesci a trovare come attivare la visualizzazione base64
    Prova a sostituire “echo base64_decode(‘ blablabla’);” con l’icona (png) equivalente “echo (‘miaicona.png’);” senza virgolette mi raccomando l’unico svantaggio è quello che in ogni cartella devi portarti dietro le icone, o altrimenti fai una cartella nella radice principale del sito e metti il percorso assoluto nello script.

  8. Ciao…ho un problema: non riesco a vedere le icone. Se visiti il sito che ho fatto e clikki su Appunti poi 2009-10 capisci subito…eppure nel sito che hai linkato le icone le vedo….
    Grazie infinite!!

  9. the images are encoded into the script with MIME base64, the php function “base64_decode” — Decodes data and print the images, if you want to change the images you must change the code mime64 with that of the image that you would like to change.

    Ciao

    Maurizio

  10. C’è un errore di battitura controlla che nel codice ci siano gli apici corretti, ovvero: ribatti tutti gli apici singoli e doppi, la costruzione del link corretta la trovi nel post delle 9:10, ma se fai copia e incolla ti da errore perché così copi anche le impostazioni del foglio di stile di questa pagina web e di conseguenza cambia la codifica ascii e anche se i gli apici sembrano uguali non sono la stessa cosa. Infine conta gli apici, tanti ne apri tanti ne devi chiudere e con ordine, immagina che siano delle parentesi.

    Un esempio {[(-)]} è come ””‘-‘””

  11. Grazie Maurizio per la risposta, la porzione di codice “Organize file info”
    in effetti e’ cosi’ come tu la hai editata . Cambiando pero’la variabile come ipertesto mi genera il seguente errore:Parse error: syntax error, unexpected T_STRING in ….
    Grazie

  12. il codice di mambro mi legge la variabile come un ipertesto quindi devo scriverla in un altro modo per stampare il codice, vediamo se funziona

    $item[‘link’] = ‘<a href="’.$item[‘name’].’.’.$item[‘ext’].’">’.$item[‘name’].’.’.$item[‘ext’].'</a>’;

  13. #controlla che “Organize file info” sia così:

    $miofile = explode(“.”,basename($file));

    $item[‘name’] = $miofile[0];

    $item[‘lname’] = strtolower($miofile[0]);

    $item[‘ext’] = $info[‘extension’];
    if($info[‘extension’] == ”)
    $item[‘ext’] = ‘.’;
    $item[‘bytes’] = $stat[‘size’];
    $item[‘size’] = bytes_to_string($stat[‘size’], 2);
    $item[‘mtime’] = $stat[‘mtime’];

    e che il costrutto di base della variabile $item[‘link’] sia questo:

    $item[‘link’] = ‘‘.$item[‘name’].’.’.$item[‘ext’].’‘;

  14. Cambiando il codice originale con il tuo in effetti si visualizza il nome del file ma viene visualizzata l’estensione 2 volte (es: documento.doc.doc).Come si risolve?.Grazie

  15. sosituisci questa porzione di codice (righe 211-212)

    $item[‘name’] = $info[‘filename’];
    $item[‘lname’] = strtolower($info[‘filename’]);

    con questa:

    $miofile = explode(“.”,basename($file));
    $item[‘name’] = $miofile[0];
    $item[‘lname’] = strtolower($miofile[0]);

    il fatto che non legga filename dipende dalla versione di php e se è stata implementata la funzione pathinfo

  16. Come mai nell’elenco dei file presenti nella cartella non mi restituisce il nome del file stesso ma solo la sua estensione?
    (icona .estensione)

    Ringrazio