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

    Upload su Server Remoto e verifica

    Ciao a tutti,

    sto implementando nel mio nuovo progetto la possibilità di poter caricare delle directory (X) su un Server remoto (Y). Sto diventando pazzo perchè devo poter gestire diversi aspetti quali:

    1- Recupero dimensione directory per confronto tra locale e remota;
    2- Verifica presenza di una directory/file già presente;
    3- Possibilità di catturare le evenutali eccezioni/eventi derivanti da blocchi della rete.

    Cercando per la rete ho trovato diverse librerie che elenco qui di seguito:

    1- Jscape
    2- Apache Commons Net
    3- edtFtpj
    4- Open adaptor ftp

    Al momento sto utilizzando le prima (Jscape) ma mi ritrovo in difficoltà quando per esempio ho bisogno, una volta che parte il processo di upload e successivamente viene fermato fare un confronto successivo tra dir locale e dir remota per poter ripartire dal punto nel quale si era bloccato.

    Vi chiedo a voi gentilmente se avete qualche idea da suggerirmi per situazioni di questo tipo.

    In poche parole dovrei poter sincronizzare delle cartelle locali e remoti sia su Server FTP che server SFTP.

    L'insieme dei processi che sto cercando di implementare sono i seguenti:

    1- Verifica presenza remota directory;
    2- Se TRUE confronto le directory locale e remota e nel caso riprendo l'upload da dove si era fermato eseguendo un controllo in cascata su tutti i file e dir presenti;
    3- Se FALSE eseguo l'upload e verifico infine che le dimensioni delle cartelle locali e remote coincidano;

    Se avete domande da farmi per capire meglio qual'è il mio problema chiedetemi pure.

    Attendo vostri preziosi consigli, grazie mille.

    P.

  2. #2
    Ciao riprendo questo mio post.

    Qualcuno di voi ha mai utilizzato la libreria open source zehon library per implementare trasferimenti ftp/sftp in una web app per caso ?

    Mi sapreste dire i limiti o pareri su questa libreria free gentilmente ?

    E' possibile applicare degli EventListener per monitorare il trasferimento FTP/SFTP ?

    http://www.zehon.com/

    Attendo vostri preziosi pareri in merito.

    Grazie mille,

    p.

  3. #3

    Verificare esistenza Directory remota

    Ciao,

    continuo a riportare qui di seguito gli step e i problemi di questo progetto sperando che qualcuno mi illumini prima o poi.

    Al momento sto utilizzando sia la libreria Jscape che Zehon. Questo perchè entrambe posseggono dei metodi utili per verificare l'upload di cartelle remote su un server.

    Al momento il flusso della mia classe esegue queste operazioni:

    1- Connessione a server ftp tramite host,user,pass
    2- Verifica presenza cartella root su server remoto
    3- Nel caso fosse presente eseguo la sincronizzazione tra le cartelle locale e remota altrimenti fa partire l'upload.
    4- La sincronizzazione tra cartella locale e remota esegue queste operazioni:
    a- Recupera l'intera struttura della root locale
    b- Verifica ogni elemento presente ciclando su una lista di File
    c- Se è un file verifica che il file sia già presente nel rispettivo folder remoto
    *- Nel caso le dimensioni fosse diverse viene invocato il comando Resume altrimenti viene caricato dall'inizio
    d- Se è una directory verifica che sia già presente altrimenti viene create
    5- Infine viene verificata la dimensione del folder locale e remota alla fine del processo.

    Il problema che ho adesso è quando invoco il comando contenuto nella libreria Zehon per verificare la presenza o meno di una cartella o file nel Server remoto.

    L'eccezione che viene scatenata è una org.commons.vfs.FileSystemExcepetion dicendomi che non riesce più a connettersi. Il problema che non capisco per quale motivo questa eccezione non è sempre visibile nello stesso punto ma a volte mi succede dopo 1 file controllato altre volte dopo N file verificati. Il comando scatenante la suddetta eccezione è questo:

    codice:
    FTP.fileExists(...) o FTP.folderExists(....)
    Vi riporto qui di seguito il mio codice sperando di avere qualche illuminazione in merito:

    codice:
                   Ftp ftp    = new Ftp();
    
    
                    //capture Ftp related events
                    ftp.addFtpListener(this);
                    log.debug("Add Listener");
    
                    //set hostname
                    ftp.setHostname(hostname);
    
                    //set username
                    ftp.setUsername(username);
    
                    //set password
                    ftp.setPassword(password);
    
                    //connect
                    ftp.connect();
    
                    //set transfermode
                    ftp.setBinary();
    
                    //get source Dir size
                            Long localFolderSize = FileUtils.sizeOfDirectory(directory);
    
                            //check if directory already exists
                    if(!rootExists(directory.getName(), ftp.getDirListing())){
    
                            //upload full directory
                            ftp.uploadDir(directory);
    
                            //synchronized directory
                            synchronizerFolder(directory.getName(),directory,ftp,hostname,username,password);
    
                    }else{
    
                            //synchronize local and remote folder
                            log.debug("Synchronized local and remote Folder");
                            synchronizerFolder(directory.getName(),directory,ftp,hostname,username,password);
    
                    }
    
                    //show tree of remote folder
                    getFtpDirListing(directory.getAbsolutePath(),ftp);
    
                    if(matchingFolder(localFolderSize,remoteFolderSize)){
    
                            System.out.println("The local and remote folders size are equal "+"local: "+localFolderSize+" remote: "+remoteFolderSize);
                            return true;
    
                    }else{
    
                            System.out.println("The local and remote folders size aren't equal "+"local: "+localFolderSize+" remote: "+remoteFolderSize);
                            return false;
    
                    }
        }
    
        public void synchronizerFolder(String string, File dir,Ftp ftp,String hostname, String username, String password) throws FileNotFoundException, FileTransferException {
    
            File startingDirectory= dir;
            List<File> files = getFileListing(startingDirectory);
    
            //print out all file names, in the the order of File.compareTo()
            for(File file : files ){
    
              System.out.println("Checks that object: "+file);
    
              String cleanFile   = cleanPath(file.toString());
              String cleanFolder = cleanPath(file.toString()).replace(file.getName(), "");
    
                    if(file.isFile()){
                            try {
    
                                            if(FTP.fileExists(cleanFile.replace(file.getName(), ""), file.getName(), hostname, username, password)){
    
                                                    long sizeRemoteFile = ftp.getFilesize(cleanFile);
                                                    long sizeLocalFile  = file.length();
    
                                                      if(!(sizeRemoteFile == sizeLocalFile)){
    
                                                              System.out.println("Resume the local and remote file: "+file);
                                                              ftp.resumeUpload(file,cleanFile,1024);
    
                                                      }
    
                                            }else{
    
                                                    System.out.println("Upload the file: "+file+" into folder "+cleanFolder);
                                                    ftp.setDir(cleanFolder);
                                                    ftp.upload(file);
                                                    ftp.setDirUp();
    
                                            }
                                    } catch (FileTransferException e) {
                                            e.printStackTrace();
                                    } catch (FtpException e) {
                                            e.printStackTrace();
                                    }
    
                    }else if (file.isDirectory()){
    
                                    try {
    
                                            if(!FTP.folderExists(cleanFile, hostname, username, password)){
    
                                                    ftp.connect();
    
                                                    System.out.println("Create new dir:"+cleanFolder);
                                                    ftp.makeDir(cleanFile);
                                            }
                                    } catch (FtpException e) {
                                            e.printStackTrace();
                                    }
                    }
            }
        }

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.