Script php: Elencare file contenuti in cartella

   difficoltà:  script script script script script

Script simili
19/7/2006


Questa funzione elenca i file contenuti in una cartella:

function elencafiles($dirname){
$arrayfiles=Array();
if(file_exists($dirname)){
$handle = opendir($dirname);
while (false !== ($file = readdir($handle))) {
if(is_file($dirname.$file)){
array_push($arrayfiles,$file);
}
}
$handle = closedir($handle);
}
sort($arrayfiles);
return $arrayfiles;
}

$arrayfile=array();
$arrayfile=elencafiles("public/folder/");
La funzione restituisce un array contenente l'elenco dei file contenuti nella cartella in ordine alfabetico.
Se vogliamo filtrare solo i file della cartella con data esttensione, ad esempio solo immagini, possiamo usare la seguente funzione:
function elencafiles($dirname,$arrayext){
$arrayfiles=Array();
if(file_exists($dirname)){
$handle = opendir($dirname);
while (false !== ($file = readdir($handle))) {
if(is_file($dirname.$file)){
$ext = strtolower(substr($file, strrpos($file, "."), strlen($file)-strrpos($file, ".")));
if(in_array($ext,$arrayext)){
array_push($arrayfiles,$file);
}
}
}
$handle = closedir($handle);
}
sort($arrayfiles);
return $arrayfiles;
}

$array_extimg=array('.jpg','.jpeg','.gif');
$arrayfile=array();
$arrayfile=elencafiles("public/folder/",$array_extimg);
Si passa cosi alla funzione anche l'array delle estensioni desiderate.

Social:


Donazione:
Se questo script ti è stato utile e ti ho fatto risparmiare tempo e denaro fai una
qualsiasi cifra è ben accetta! 1€, 3€, 5€ ,10€, 50€ ;-) fai te!

Permalink: Tag: Script Simili: Permalink: Link utili:
Tools:
Feed RSS    



Commenti


  PeterPetrelli

19/11/2007 20:56:54

questo script fa al caso mio, ma come devo fare per farlo funzionare?
la cartella che contiene i file si chiama public, come devo modificare il codice sopra?
inoltre dove e come devo inserire il codice sopra?


  Fabio

19/11/2007 21:28:39

Se usi la prima funzione dello script potrai richiamare alla fine:

$arrayfile=elencafiles("public/");

poi fare un ciclo per scrivere tutti i file:


for($a=0;$a<count($arrayfile);$a++){
echo "<a href='public/".$arrayfile[$a]."'>".$arrayfile[$a]."</a>";
}


  Luca

8/2/2008 4:26:03

non riesco ad inserire il codice.
poi perché il codice non inizia con <?php e finisce con ?>
Grazie
Luca

  Fabio

8/2/2008 9:15:15

@luca:
chiaramente il codice nella pagina php lo devi inserire con i tag php <? ?>

  Luca

8/2/2008 14:14:45

Fabio scusa ma non riesco:
anche io ho la cartella che contiene i file di nome public
grazie mille


<body>
<?
function elencafiles($dirname){
$arrayfiles=Array();
if(file_exists($dirname)){
$handle = opendir($dirname);
while (false !== ($file = readdir($handle))) {
if(is_file($dirname.$file)){
array_push($arrayfiles,$file);
}
}
$handle = closedir($handle);
}
sort($arrayfiles);
return $arrayfiles;
}

$arrayfile=array();
$arrayfile=elencafiles("public/");
?>
</body>


  Fabio

8/2/2008 14:18:47

Prova così:

$arrayfile=elencafiles($_SERVER['DOCUMENT_ROOT']."/public/");

  luca

8/2/2008 15:02:26

nada de nada

  Fabio

8/2/2008 15:10:19

...ma stampi l'array?
se nn l'hai ancora fatto... alla fine aggiungi:


for($i=0;$i<count($arrayfile);$i++) {
echo $arrayfile[$i]."<br>";
}


  luca

8/2/2008 15:34:45

Scusa l' assillo ma anche aggiungendo

or($i=0;$i<count($arrayfile);$i++) {

echo $arrayfile[$i]."<br>";

}

niente, ho provato sia con : $arrayfile=elencafiles($_SERVER['DOCUMENT_ROOT']."/public/");
che con: $arrayfile=elencafiles("public/");

non mi da nessun errore ma la pagina rimane bianca.
dove sbaglierò ?

  merha

11/2/2008 11:09:58

ho provato anche io e nn funziona..idem anche a me nn esce nessun errore..

forse dipende dalle vari versione di php..

bo io ho la 5 nn esce nulla..

ho fatto anche un controllo subito al ciclo
while (false !== ($file = readdir($handle))) {

e mi escono 2 risultati in +

  Fabio

11/2/2008 11:24:45

i due risultati in + possono ssere i file nascosti..di solito c'è il file .db.
cmq ho riprovato ora e funziona correttamente.

prova a copiar e incollare:


function elencafiles($dirname){
$arrayfiles=Array();
if(file_exists($dirname)){
$handle = opendir($dirname);
while (false !== ($file = readdir($handle))) {
if(is_file($dirname.$file)){
array_push($arrayfiles,$file);
}
}
$handle = closedir($handle);
}
sort($arrayfiles);
return $arrayfiles;
}

$arrayfile=array();
$arrayfile=elencafiles($_SERVER['DOCUMENT_ROOT']."/public/");
print_r($arrayfile);


  merha

11/2/2008 15:57:46

si funziona ora..
bella

  merha

14/2/2008 9:53:07

ciao a rieccomi..se oltre ad elencare i file ci fossero anche delle cartelle come si fa?

cioè io vorrei l elenco dei file e delle cartelle che sono all interno di una directory..
è possibile farlo con il tuo script




  Fabio

14/2/2008 15:46:28

invece di


if(is_file($dirname.$file)){

array_push($arrayfiles,$file);

}


metti solo array_push($arrayfiles,$file);

ti elenca anche le directory

  Nim

8/3/2008 17:43:28

Scusate, a me funziona perfettamente seguendo i consigli di Fabio, ma ora vorrei chiedere:
Se volessi convertire questo elenco di file in link, cosi da aprire o scaricare i relativi files?
Come si fa?

  Fabio

9/3/2008 16:47:47

quando stampi l'elenco dei file ci piazzi il link:


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

echo "<a href='http://sito.it/cartella/".$arrayfile[$i]."'>".$arrayfile[$i]."</a><br>";

}


  bloodrayne

31/3/2008 2:40:15

e se volessi elencare tutti i file contenuti in un dvd dati? e magari metterli in un db?

  bono

19/6/2008 13:05:18

ciao, a me funziona perfettamente, solo vorrei sapere come posso fare per ordinare i file non in ordine alfabetico ma per data di creazione

  fera

24/6/2008 7:39:09

mi accodo anche io a bono: come si fa per ordinarli per data anzichè per nome?
così facendo, mi elimino la rogna di inserire i numeri progressivi nei nomi, per dargli l'ordine che voglio io...

  mistik

7/7/2008 13:27:24

o tuttalpiù aggiungere automaticamente un numero progressivo man mano che si aggiungono nuovi files

  Teo

6/11/2009 16:27:25

Funziona ottimamente.
grazie!

  matteo

9/1/2011 18:15:36

Come posso ricavare i file presenti su questo sito? http://ftp.heanet.ie/mirrors/ubuntu-cdimage/kubuntu/releases/lucid/release/

È possibile una cosa del genere??

  Alex

9/1/2012 10:58:53

Ciao,
grazie per lo script, è utilissimo! E' possibile ordinare gli elementi in base alla data di caricamento di questi sul server?

Grazie

  jeremy.83

20/6/2012 15:48:21

Ciao,

grazie per lo script. Volevo segnalare che ho fatto una modifica che magari può interessare a qualcuno. Avevo bisogno di cercare i file con una certa estensione non solo all'interno delle cartelle ma anche nelle SOTTOCARTELLE, quindi ho modificato la funzione rendendola ricorsiva. Ecco come:


function elencafiles($dirname,$arrayext)
{
$arrayfiles=array();
if(file_exists($dirname))
{
$handle = opendir($dirname);$i=0;
while (false !== ($file = readdir($handle)))
{
$arr=array();
if(is_dir($dirname.$file))
{
$arr=elencafiles($dirname.$file,$arrayext);
}
else
{
$ext = strtolower(substr($file, strrpos($file, "."), strlen($file)-strrpos($file, ".")));
if(in_array($ext,$arrayext))
{
array_push($arr,$file);
}

}
foreach($arr as $file)
array_push($arrayfiles,$file);

}
$handle = closedir($handle);
}
sort($arrayfiles);
return $arrayfiles;
}




Lascia un commento


Codice di controllo*:
Nome*:
Email/Link:
Testo*:
 
I campi contrassegnati con * sono obbligatori.