Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    FTP: Recuperare dimensione file e visualizzarla in una cella

    Ciao ragazzi, ho un piccolo problema con il mio script. Ho creato un piccolo pezzo di codice con cui si connette via ftp al mio sito, mi indica le cartelle e i file in esso contenuto. Ho una cella nel mio sito che è strutturata in questo modo:

    Nome |Dimensione |
    file1.txt| 1.3byte |
    file2.txt| 1.8byte |

    Per estrarre i nomi ci sono riusciuto, anche perchè il contenuto da leggere si trova in una particolare cartella....vi posto tutto il codice dello script, magari possa essere utile a qualcuno.

    Codice PHP:
    $ftp_server="ftp.********";
    $ftp_user_name="*******";
    $ftp_user_pass="*******";
    // stabilisce la connessione
    $conn_id ftp_connect($ftp_server);

    // si collega con nome utente e password
    $login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass);

    // recupera il contenuto della directory corrente
    $contents ftp_nlist($conn_id"httpdocs/images");

    // elimino il resto del contenuto
    $vecchio = array("httpdocs""images""/");
    $nuovo  = array("""""");
    $newcontents str_replace($vecchio$nuovo$contents);

    // visualizzo le cartelle
    foreach ($newcontents as $file)
    {
    echo 
    '<tr><td>[url="alalalal"]'.$file.'[/url]</td>';
    echo
    '<td>'.ftp_size($conn_id,$file).'</td></tr>';

    Io ho provato con appunto
    Codice PHP:
    // visualizzo le cartelle
    foreach ($newcontents as $file)
    {
    echo 
    '<tr><td>[url="alalalal"]'.$file.'[/url]</td>';
    echo
    '<td>'.ftp_size($conn_id,$file).'</td></tr>';

    per far visualizzare i file, ma come si può vedere nella cella accanto volevo far vedere anche la dimensione del file...
    All'avvio della pagina, i file si vedono ma tutte le dimensioni vengono -1....

    Che cosa sbaglio?
    Potete darmi una mano?

    Grazie a tutti, Fabio.
    Realizzazione script php/mysql, per info:
    delrossofabio@gmail.com

    http://forum.html.it/forum/showthread.php?s=&threadid=1478962

  2. #2
    -1 viene restituoto quanod si verifica un errore, che in questo caso potrebbe esser dovuto al fatto che il server ftp non supporta questo genre di controllo

  3. #3
    Ma non esiste un modo secondario per recuperare la dimensione? Con uno script già fatto, la dimensione era apparsa, ma con questo non funziona

    Qualche suggerimento?
    Realizzazione script php/mysql, per info:
    delrossofabio@gmail.com

    http://forum.html.it/forum/showthread.php?s=&threadid=1478962

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    68
    PROVA con filesize

    if( ! ( $dp = opendir ( "$dir" ) ) )
    die ( "Non riesco a esplorare il contenuto" );

    // contatore per gestire i colori della tabella
    $conta = 1;


    while (false !== ($file = readdir($dp))) {
    if ( is_file ( $file ) ) {



    if ( bcmod ( $conta , 2 ) == 0 ) {//cambio colore sfondo ogni riga
    $colore = "#CCCCCC";
    } else {
    $colore = "#FFFFFF";
    } ?>
    <tr bgcolor="<? echo $colore; ?>">
    <td align="left"><? echo $file; ?></td>
    <td align="left"><? echo $indirizzo.$file; ?></td>
    <td align="center"><? echo date ( "d/m/Y H:i:s", filemtime ( $file ) ); ?></td>
    <td align="left"><? echo sprintf("%u", formatbytes(filesize($file)))." Mb ";..........
    ..............
    $conta++;
    .....

    con

    //funzione per formattare byte
    function formatbytes($val, $digits = 3, $mode = "IEC", $bB = "B"){ //$mode == "SI"|"IEC", $bB == "b"|"B"
    $si = array("", "k", "M", "G", "T", "P", "E", "Z", "Y");
    $iec = array("", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi", "Yi");
    switch(strtoupper($mode)) {
    case "SI" : $factor = 1000; $symbols = $si; break;
    case "IEC" : $factor = 1024; $symbols = $iec; break;
    default : $factor = 1000; $symbols = $si; break;
    }
    switch($bB) {
    case "b" : $val *= 8; break;
    default : $bB = "B"; break;
    }
    for($i=0;$i<count($symbols)-1 && $val>=$factor;$i++)
    $val /= $factor;
    $p = strpos($val, ".");
    if($p !== false && $p > $digits) $val = round($val);
    elseif($p !== false) $val = round($val, $digits-$p);
    return round($val, $digits) . " " . $symbols[$i] . $bB;
    }
    un buon forum per un mondo migliore

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.