Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Lista file FTP

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    6

    Lista file FTP

    Salve a tutti,
    ho la necessità di fare un download da un server FTP. Nella cartella del server ci sono circa 5.000 file. Ora ne devo prelevare solo una cinquantina che hanno in comune una stringa nel nome.
    Il problema è: il server FTP, tramite la funzione FTP_NLIST mi legge solo e soltanto i primi 2.000.
    Come posso fare ad eseguire la ricerca solo dei file che hanno la stringa del nome uguale?

    Spero di essere stao abbastanza chiaro.

    Grazie




    <?
    $ftp_server="ip FTP";
    $ftp_username="user";
    $ftp_password="pass";

    // stabilisco la connessione al server ftp
    $ftp_connessione = ftp_connect($ftp_server);

    // effetto login sul server
    $login = ftp_login($ftp_connessione, $ftp_username, $ftp_password);

    // costruisco il nome file
    $day = date("Ymd");
    $day1 = $day-1;
    $nfile='(.*)('.$day1.')\.(TXT)$';

    // controllo se la connessione ha avuto buon fine
    if(!$ftp_connessione || !$login){
    echo "\r\nConnessione FTP $ftp_server fallita!\r\n";
    }
    else {
    echo "\r\n"."Connesso a $ftp_server, utente $ftp_username"."\r\n";
    // ciclo per leggere tutte le directory
    $directory=array('1','2','3','4','5','6','7','8',' 9','10');

    for ($ind=0; $ind < count($directory); $ind++){
    $filename=array();
    $nomedir=$directory[$ind];

    echo "\r\nSono nella dir : ".$directory[$ind]."\r\n";

    $ftp_dir = "/VOL/".$directory[$ind]."/";

    if (!($dp=ftp_chdir($ftp_connessione,$ftp_dir))) die (echo "apertura directory FALLITA - ".$ftp_dir);
    $ftp_nfile = "/VOL/".$directory[$ind]."/".$nfile;
    $filename=ftp_rawlist($ftp_connessione,$ftp_dir);
    for ($i=2; $i < count($filename); $i++){

    if($filename[$i] != '.' && $filename[$i] != '..' && ereg($nfile, $filename[$i])) {
    $res = ftp_size($ftp_connessione, $ftp_dir.$filename[$i]);
    echo "FILE DWN: ".$i." - ".$ftp_dir.$filename[$i]."(".$res.")"."\r\n";

    }
    /*
    // prelevo i file
    $file_da_scaricare = $ftp_dir.$filename[$i];
    $dove_scaricare = "/file/".$directory[$ind]."/";
    $download = ftp_get($ftp_connessione, $dove_scaricare, $file_da_scaricare, FTP_);

    // controllo se download andato a buon fine
    if (!$download) {
    echo "Si è verificato un errore durante il download!"; }
    else {
    echo "Download avvenuto con successo"; }*/
    }
    }
    // chiudo connessione FTP
    ftp_quit($ftp_connessione);
    }?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    6
    Problema ancor non risolto

    HELP ME !!!!!!

  3. #3
    Non conosco PHP quindi non posso darti una mano a livello di codice; conosco però il protocollo FTP il quale supporta il "globbing" tramite il comando STAT.
    Se il server supporta tale feature (...e le implementazioni 'buone' lo fanno) dal client puoi mandare una stringa di questo tipo sul canale comandi:

    codice:
    STAT abc*
    ...e ricevere una lista di files che matchano tale wildcard (ovvero tutti i file della directory che cominciano per "abc").
    Il tipo di formattazione di tale listato sarà il medesimo di quello fornito dal comando LIST (quello che, suppongo, otterresti tramite la funzione "FTP_LIST") con l'unica differenza che esso ti perverrà sul canale comandi anzichè quello dati.
    Starà poi a te "parsare" tale risultato per ottenere i nomi dei file che sono venuti fuori e passarli alla funzione apposita per scaricarli.

    Il fatto che tu riceva un risultato massimo di 2000 elementi credo sia imputabile al server il quale intelligentemente evita di farsi carico di un eccessivo carico computazione al fine di evitare condizioni di overload e/o Denial of Service.


    Saluti
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

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.