Recuperare elenco file in una directory

Salve,

uso PHP 5 volevo sapere se è possibil e recuperare il nome dei file presenti in una directory

Ciao e grazie in anticipo

inviato 11 anni fa
goku_net
X 0 X

Certo che è possibile, ti riporto l'esempio della documentazione ufficiale che mostra i nomi di tutti i files presenti nella cartella "/percorso/ai/file":

<?php
if ($handle = opendir('/percorso/ai/file'))
{
   while (false !== ($file = readdir($handle)))
   {
       echo "$file\n";
   }
   closedir($handle);
}
?>

sempre nalla documentazione riporto una piccola modifica che serve ad evitare che vengano mostrati i files . e .. (simboleggiano la cartella corrente e quella appena superiore)

<?php
if ($handle = opendir('/percorso/ai/file'))
{
   while (false !== ($file = readdir($handle)))
   {
      if ($file != "." && $file != "..")
      {
           echo "$file\n";
      } 
   }
   closedir($handle);
}
?>

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

grazie puntuale e preciso come sempre

risposto 11 anni fa
goku_net
X 0 X

Posso intromettemi?

Se invece volessi leggere il contenuto di una cartella piena di immagini, quindi visualizzare con indicato il relativo nome, cosa devo cambiare?

Ciao ;)

risposto 11 anni fa
TrxWeb
X 0 X

Posso intromettemi?

Se invece volessi leggere il contenuto di una cartella piena di immagini, quindi visualizzare con indicato il relativo nome, cosa devo cambiare?

Ciao ;)

Lo script precedente mostra già il nome dei files presenti nella cartella. Se non ti serve altro va benissimo quello. Il fatto che siano delle immagini non infulisce.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Intendevo che oltre a leggere il contenuto, cioè l'elenco dei file, facessi anche un'anteprima delle immagini come se fosse explora risorse di windows per intenderci :)

risposto 11 anni fa
TrxWeb
X 0 X

Allora e tutta un'altra storia...

Bisognerebbe prima creare per ciascuna immagine una anteprima a dimensioni ridotte. La cosa non è immediata da realizzare e richiede l'uso delle funzioni GD

Poi andrebbe creato l'elenco delle immagini, con i necessari tag HTML (img) che puntino alle anteprime.

Se sei all'inizio con PHP forse è troppo presto per realizzare questo genere di cose.  :o

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Tieni presente che a me servirebbe solo per visualizzare delle faccine (quindi sono già piccole), ne ho tante in una cartella e sfogliarle una ad una mi stresserebbe non poco  :-[  da ui la necessità di poterle visualizzare prima di andarmele a cercare ed eventualmete linkarle. Mi hanno detto di utilizzare questo script

<?php
$path = "C:/Documents and Settings/franck/Desktop/smiles";
if ($handle = opendir($path)) {
$files = array();
while (false !== ($file = readdir($handle))) {
  if ($file != '.' && $file != '..') {
   $files .= $file;
   echo "<img alt=\"\"src=\"$file\n\">";
  }
}
if ($files == null) {
  echo "Directory vuota!!<br />\n";
}
}
?>

In un certo senso mia apre la pagina solo che al posto delle immagini mi fa vedere dei piccoli quadratini con una croce rossa nel mezzo senza nome del file. Se faccio proprietà col tasto testro mi dice il nome del file. :dunno:

risposto 11 anni fa
TrxWeb
X 0 X

Allora niente anteprime. Perfetto!  :P

Il problema di quello script è che presuppone che le immagini siano nella sua stessa cartella.

In che cartella si trova lo script? Con che indirizzo lo visualizzi nel browser?

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Effettivamente il problema è proprio questo, infatti come indirizzo mi da questo:

http://localhost/www/leggi_Caretelle/bom.gif.

Ma impostando $path = "C:/Documents and Settings/franck/Desktop/smiles"; come percorso non dovrebbe essere sufficiente per dire a php che deve controllare quella cartella, elo fa perchè come detto prima, se vado sulel proprietà mi dice il nome esatto del file. :uglystupid:

risposto 11 anni fa
TrxWeb
X 0 X

Una cosa e leggere i nomi dei files (cosa che fa PHP) un'altra e mostrare delle immagini, operazione svolta da Apache che obblica le immagini, come qualsiasi file, a stare all'interno della root del sito. Quindi le immagini si devono trovare in una cartella che permetta la loro mappatura all'interno degli URL del tuo sito. In caso contrario sono irragiungibili per Apache, nonostante PHP possa mostrare i nomi.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Una cosa e leggere i nomi dei files (cosa che fa PHP) un'altra e mostrare delle immagini, operazione svolta da Apache che obblica le immagini, come qualsiasi file, a stare all'interno della root del sito. Quindi le immagini si devono trovare in una cartella che permetta la loro mappatura all'interno degli URL del tuo sito. In caso contrario sono irragiungibili per Apache, nonostante PHP possa mostrare i nomi.

 :bye:

Quindi a questo punto come si puo agire?

risposto 11 anni fa
TrxWeb
X 0 X

Bisogna mettere le immagini in una sottocartella della root del server web. Se mi dici il percorso della root del server ti posso fare degli esempi concreti.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Come faccio a sapere la root del server.

Cmq, fai un'esempio in localhost, se fa lostesso|

risposto 11 anni fa
TrxWeb
X 0 X

La root del server è la cartella in cui metti gli script PHP, quella che poi viene mappata come cartella principale del sito.

Se ad esempio hai installato Apache 2 allora, molto probabilmente, la tua root sarà la cartella C:\Programmi\Apache Group\Apache2\htdocs

Supponiamo quindi che tu abbia messo in questa cartella lo script che deve mostrare le immagini, che chiamerò immagini.php.

immagini.php sarà quindi accessibile da http://localhost/immagini.php

Le immagini vanno messe in una sottocartella di C:\Programmi\Apache Group\Apache2\htdocs. Ad esempio nella cartella C:\Programmi\Apache Group\Apache2\htdocs\immagini

Lo script da usare allora sarebbe:

<?php
$path = "C:\Programmi\Apache Group\Apache2\htdocs\immagini";
if ($handle = opendir($path)) {
   $files = array();
   while (false !== ($file = readdir($handle))) {
      if ($file != '.' && $file != '..') {
         $files .= $file;
         echo '<img alt="" src="\\immagini\\' , $file , '">';
      }
   }
   if ($files == null) {
      echo "Directory vuota!!<br />\n";
   }
}
?>

Ciò che devi notare è l'istruzione che genera il tag img:

echo '<img alt="" src="\\immagini\\' , $file , '">';

Nell'atributo src di questo tag il nome dell'immagine va riportato insieme al nome della cartella in cui si trova, relativamente alla root del server.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ha la root :wallbash: ho capito.

Pensavo che potesse leggere anche il contenuto di una cartalle sull'hd (prendendo come esempio in locale)

Grazie della spiegazione Gianni O0

risposto 11 anni fa
TrxWeb
X 0 X

Questo le lo script che ho usato con una cartella giusto di 4 immagini e ha funzionato.

Ma sul server online no, ovviamente ho modificato il $path, mi da pagina bianca. Cmq, sono già felice così per il passo avanti ottentuo  O0

<?php
$path = "C:\Documents and Settings\franck\Desktop\gif";
if ($handle = opendir($path)) {
   $files = array();
   while (false !== ($file = readdir($handle))) {
      if ($file != '.' && $file != '..') {
         $files .= $file;
         echo '<img alt="" src="\\immagini\\' , $file , '">';
      }
   }
   if ($files == null) {
      echo "Directory vuota!!<br />\n";
   }
}
?>
Nell'atributo src di questo tag il nome dell'immagine va riportato insieme al nome della cartella in cui si trova, relativamente alla root del server.

Scusa, ma alla luce del risultato positivo in locale dello script sopra indicato, non credo di aver capito il significato di quello che hai scritto in merito al nome del tag :-[

risposto 11 anni fa
TrxWeb
X 0 X

Devi modificare il campo src del tag img in modo che contempli la cartella del server nella quale risiedono le immagini. Nello script che ti ho proposto tale cartella si chiamava "immagini", adesso va modificata. Dove hai messo le immagini sul server?

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Scusa e che mi sto un po a rinco.......... :uglystupid:

Ho fatto un po di casini, ho modificato dei valori, poi ho ricaricato la pagina, ma evidentemente ha caricato quella funzionante presente nella casch e mi ha tratto in inganno. :crazy:

Grazie  O0

risposto 11 anni fa
TrxWeb
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili