PDA

View Full Version : [JAVA] invio file in FTP


softoxy
30-03-2006, 17:20
Importando org.apache.commons.net.ftp.* ho a disposizione deversi oggetti per poter eseguire uno scambio di file tra maccchine remote.
Vorrei,però, poter inviare un file ad un server e far vedere lo stato dell'upload, come posso fare?

Dopo aver dichiarato e instanzioato gli oggetti invio il file in questo modo:

try {
ftp.setFileType( FTPClient.BINARY_FILE_TYPE );
InputStream is = new FileInputStream( file_da_aprire );

ftp.storeFile( "nome_file.jpg", is );
}
catch (IOException e) {
//JOptionPane.showMessageDialog(null, e);
System.out.println(e);
}

Non so cosa inventarmi.
Ad esempio ho memorizzato il contenuto del file in un oggetto String e poi lo invio in FTP convertendolo, prima, per mezzo:

ByteArrayInputStream bais = new ByteArrayInputStream(fileUpload.getBytes());

Il risultato è che mi invia qualche byte in più e quindi il file non è corretto.
C'è qualche altra soluzione?

Grazie!

Angus
30-03-2006, 21:41
non puoi utilizzare un oggetto String per memorizzare array di byte, per problemi legati all'encoding. Puoi semplicemente caricare il file in un ByteArrayOutputStream e farti restituire da questo un array di bytes quando serve.

softoxy
31-03-2006, 09:24
Intanto, grazie per la risposta, ma il mio problema più grande è determinare il livello di byte uploadati.
Non c'è nessun metodo in

org.apache.commons.net.ftp.FTPClient;

chemi restituisce lo stato del trasferimento.
Mentre ho trovato con

com.aoindustries.net.FtpClient

ha il metodo getMonitorInterval() per restituire i byte trasferiti, ma non credo sia no classi gratutite.

Non so dove parare!