Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    60

    Miglioramenti per visualizzazione file

    Ciao a tutti,
    ho realizzato (seguendo alcuni tutorial) questo script PHP che permette di visualizzare i file presenti in una cartella.
    Lo script è questo:

    Codice PHP:
    <?php 
    $directory 
    "dir" ;

    function 
    dir_list($directory FALSE) { 
      
    $dirs= array(); 
      
    $files = array(); 
      if (
    $handle opendir("./" $directory)) { 
        while (
    $file readdir($handle)) { 
          if (
    is_dir("./{$directory}/{$file}")) { 
            if (
    $file != "." $file != ".."$dirs[] = $file
          } else { 
            if (
    $file != "." $file != ".."$files[] = $file
         } 
      } 

    closedir($handle); 
    reset($dirs); 
    sort($dirs); 
    reset($dirs); 
    reset($files); 
    sort($files); 
    reset($files); 
    echo 
    "\n

    "

    while(list(
    $key$value) = each($files)) { 
    // qui puoi fare l'operazione su "$directory.$value", p.es.: 

      
    echo " <table border='0' cellpadding='0' id='tab_file'> 
      <tr> 
      <td width='5%'>
      [img]../img/file.png[/img]
      </td> 
      <td width='65%'>
    {$value}</td>
      <td width='15%'> [url='
    {$directory}{$value}\']Download[/url]</td>
      <td width='15%'>[url='elimina.php?file=../
    {$directory}/{$value}']Elimina[/url]  
      </td> 
      </tr>
      </table>\n"
    ; } echo "</p>\n"; } dir_list("/dir/"); 
    ?>
    Questo script genera una tabella contenente un'icona:
    codice:
    <td width='5%'> [img]../img/file.png[/img] </td>
    mostra il file e diverse funzioni (Elimina e Download)
    Ho diverse idee su come migliorarlo ma non so come realizzarle.

    • Al posto dell'immagine prima del nome del file vorrei inserire un'immagine in relazione al tipo di file (es. il file è un pdf, l'immagine è quella di un pdf).
    • Nascondere l'estensione del file che viene mostrato.
    • Visualizzare la dimensione del file caricato.


    Qualcuno riesce a darmi dei suggerimenti o a scrivermi il codice per avere queste cose?

    Grazie in anticipo.

  2. #2
    Ciao,

    - per eliminare l'estensione puoi fare un substr($file,strrpos($file,0,".")); <- tronca la stringa dall'ultimo . cioè quello che divide il nome dall'estensione (attenzione alla doppia r in strrpos).

    - allo stesso modo puoi fare substr($file,strrpos($file,".")+1); per prendere l'estensione e mettere una variabile nel path del tag IMG in modo che carichi l'immagine relativa.

    - per la dimensione del file il comando è filesize($directory.$file);

  3. #3
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Con la funzione pathinfo() recuperi estensione e nome senza estensione

    con filesize() recuperi la dimensioned del file

    Per le immaginette ti consiglio di creare un array del tipo
    Codice PHP:
    $immfile=array('PDF'=>'../img/pdf.png','DOC'=>'../img/doc.png',...); 
    ovvero mappare le estensioni di modo che, insieme all'estensione che recuperi con la prima funzione, applicata una strtoupper(), ottieni l'indice per l'array che ti fornisce il percorso all'immagine da visualizzare ovverosia

    Codice PHP:
    //$pathInfoResult contiene il risultato della chiamata a pathinfo()
    $ext=  strtoupper($pathInfoResult['extension']);
    if(isset(
    $immfile[$ext]))
        echo 
    "<img src=\"{$immfile[$ext]}\"/>";
    else
        echo 
    '[img]../img/genericicon.png[/img]'
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    60
    Originariamente inviato da Grino
    Con la funzione pathinfo() recuperi estensione e nome senza estensione

    con filesize() recuperi la dimensioned del file

    Per le immaginette ti consiglio di creare un array del tipo
    Codice PHP:
    $immfile=array('PDF'=>'../img/pdf.png','DOC'=>'../img/doc.png',...); 
    ovvero mappare le estensioni di modo che, insieme all'estensione che recuperi con la prima funzione, applicata una strtoupper(), ottieni l'indice per l'array che ti fornisce il percorso all'immagine da visualizzare ovverosia

    Codice PHP:
    //$pathInfoResult contiene il risultato della chiamata a pathinfo()
    $ext=  strtoupper($pathInfoResult['extension']);
    if(isset(
    $immfile[$ext]))
        echo 
    "<img src=\"{$immfile[$ext]}\"/>";
    else
        echo 
    '[img]../img/genericicon.png[/img]'
    Scusami, grazie per l'aiuto prima di tutto.
    Ho riadattato i tuoi suggerimenti per cambiare l'immagine a seconda del file in questo modo:
    Codice PHP:
    <?php 
    $directory 
    "dir" ;
    $immfile=array('PDF'=>'../img/file_type/pdf.png','DOC'=>'../img/file_type/doc.png');
    function 
    dir_list($directory FALSE) { 
      
    $dirs= array(); 
      
    $files = array(); 
      if (
    $handle opendir("./" $directory)) { 
        while (
    $file readdir($handle)) { 
          if (
    is_dir("./{$directory}/{$file}")) { 
            if (
    $file != "." $file != ".."$dirs[] = $file
          } else { 
            if (
    $file != "." $file != ".."$files[] = $file
         } 
      } 

    closedir($handle); 
    reset($dirs); 
    sort($dirs); 
    reset($dirs); 
    reset($files); 
    sort($files); 
    reset($files); 
    echo 
    "\n

    "

    while(list(
    $key$value) = each($files)) { 
    // qui puoi fare l'operazione su "$directory.$value", p.es.: 

      
    echo " <table border='0' cellpadding='0' id='tab_file'> 
      <tr>"
    ;
    $ext=  strtoupper ('extension'); 
      if(isset(
    $immfile[$ext])) 
        echo 
    "<td width='5%'>
      <img src=\"
    {$immfile[$ext]}\"/>
      </td> "

    else 
       
    "<td width='5%'>[img]../img/file.png[/img]</td>";
       
     echo
    "
      <td width='65%'>
    {$value}</td>
      <td width='15%'> [url='
    {$directory}{$value}\']Download[/url]</td>
      <td width='15%'>[url='elimina.php?file=../
    {$directory}/{$value}']Elimina[/url]  
      </td> 
      </tr>
      </table>\n"
    ; } echo "</p>\n"; } dir_list("/dir/"); 
    ?>
    ma non visualizza nessuna immagine, dove sto sbagliando?

  5. #5
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Originariamente inviato da matmaz
    Codice PHP:
    <?php 
    $directory 
    "dir" ;
    $immfile=array('PDF'=>'../img/file_type/pdf.png','DOC'=>'../img/file_type/doc.png');
    function 
    dir_list($directory FALSE) { 
      
    $dirs= array(); 
      
    $files = array(); 
      if (
    $handle opendir("./" $directory)) { 
        while (
    $file readdir($handle)) { 
          if (
    is_dir("./{$directory}/{$file}")) { 
            if (
    $file != "." $file != ".."$dirs[] = $file
          } else { 
            if (
    $file != "." $file != ".."$files[] = $file
         } 
      } 

    closedir($handle); 
    reset($dirs); 
    sort($dirs); 
    reset($dirs); 
    reset($files); 
    sort($files); 
    reset($files); 
    echo 
    "\n

    "

    while(list(
    $key$value) = each($files)) { 
    // qui puoi fare l'operazione su "$directory.$value", p.es.: 

      
    echo " <table border='0' cellpadding='0' id='tab_file'> 
      <tr>"
    ;
      
    $pi=pathinfo("./$directory/$file");   //modifica
    $ext=  strtoupper ($pi['extension']); //modifica
      
    if(isset($immfile[$ext])) 
        echo 
    "<td width='5%'>
      <img src=\"
    {$immfile[$ext]}\"/>
      </td> "

    else 
       
    "<td width='5%'>[img]../img/file.png[/img]</td>";
       
     echo
    "
      <td width='65%'>
    {$value}</td>
      <td width='15%'> [url='
    {$directory}{$value}\']Download[/url]</td>
      <td width='15%'>[url='elimina.php?file=../
    {$directory}/{$value}']Elimina[/url]  
      </td> 
      </tr>
      </table>\n"
    ; } echo "</p>\n"; } dir_list("/dir/"); 
    ?>
    ma non visualizza nessuna immagine, dove sto sbagliando?
    Fai attenzione all'uso che fai dei path rrlativi utilizzando i ./ e ../ purtroppo nel codice li mischi e non è chiaro a che livello esegui il tuo script e quindi quale sia più opportuno utilizzare.

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.