2011-05-19 11 views
7

Uso le librerie FTPClient e FTPServer di Apache nel mio progetto Java. Server e client si trovano sulla stessa macchina.Errore caricamento file FTP Java

Il mio server FTPS dovrebbe essere un server locale, niente collegato a Internet. Posso collegarmi a FTPServer dal client (ottengo 230 come codice di risposta) ma non riesco a fare nulla. Non posso memorizzare o recuperare alcun file.

Ho letto quasi tutte le domande relative a questo argomento ma le persone che hanno fatto altre domande sono state in grado di inviare file semplici e hanno avuto problemi con l'invio di file come PDF ecc. Ho solo bisogno di inviare o recuperare file di testo.

Qualche suggerimento?

 FTPClient client = new FTPClient(); 
     String host = "mypc"; 
     String Name = "user"; 
     String Pass = "12345"; 

     client.connect(host); 
     client.login(Name,Pass); 
     System.out.println("Reply Code: " +client.getReplyCode()); 


    File file = new File("C:\\.....myfile..txt"); 

     FileInputStream in = new FileInputStream("C:\\.....myfile..txt"); 
     boolean isStored = client.storeFile("uploadedfile.txt", in); 
     in.close(); 
     client.logout(); 
     System.out.println("isStored: " +isStored); 

Non ho inserito i nomi dei percorsi reali. Restituisce false, senza eccezioni, ecc. Questo potrebbe essere dovuto al fatto che sono sullo stesso computer?

Modifica: risultava necessario il permesso di scrittura per inviare un file su ftpserver. Per impostazione predefinita, non fornisce agli utenti il ​​permesso di scrittura. Come posso dare agli utenti il ​​permesso di scrittura usando la libreria ftpserver di Apache?

+0

perché non puoi? eccezioni, non succede nulla? Qual è il tuo codice? – Bozho

+3

Potrebbe essere solo tu non hai i permessi. Dicci di più, siamo curiosi :) –

+0

Se non ricevi nulla dal codice client, perché non whack logging sul server e vedere cosa viene registrato? – Jasoon

risposta

5

Problema risolto: Ecco come fornire un permesso di scrittura all'utente. Ho aggiunto questo snippet al lato server e ha funzionato.

List<Authority> auths = new ArrayList<Authority>(); 

Authority auth = new WritePermission(); 

auths.add(auth); 

user.setAuthorities(auths); 

C'è termine Authority scritto in questo simbolo ->< > dopo List e ArrayList nella prima riga. Il sito non vede le parole nel simbolo <>.