Pessoal,
eu estava com dificuldade em fazer o upload de um arquivo para o servidor via FTP a partir da minha aplicação feita com Swing. Dei uma pesquisada no Google e no próprio GUJ e consegui resolver o problema, estou conseguindo jogar o sarquivos no local correto no servidor.
O problema é que, para enviar duas fotos (ou um pouco mais, mas nunca muitas), o meu JFrame fica travado, e o pior é que está demorando bastante para completar o upload.
Vou postar o código… se alguém puder me dar uma dica eu agradeço muito.
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FotosFTP {
public static boolean insereFotos(Moto moto){
FTPClient ftp = new FTPClient();
try {
ftp.connect("ftp.servidor.com.br");
if( FTPReply.isPositiveCompletion( ftp.getReplyCode() ) ) {
ftp.login( "username", "senha" );
} else {
//erro ao se conectar
ftp.disconnect();
System.out.println("Conexão recusada");
return false;
}
ftp.changeWorkingDirectory("/public_html/fotos");
ftp.enterLocalActiveMode();
ftp.enterLocalPassiveMode();
FileInputStream stream = null;
String nomeArquivo = null;
for (int i = 0; i < moto.getFotos().size(); i++){
nomeArquivo = "moto"+moto.getId()+"_"+i+ moto.getFotos().get(i).getPath().substring(moto.getFotos().get(i).getPath().lastIndexOf("."));
stream = new FileInputStream(moto.getFotos().get(i));
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.storeFile( nomeArquivo, stream );
}
stream.close();
stream = null;
} catch (Exception e) {
// TODO: handle exception
return false;
} finally {
try {
ftp.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ftp = null;
}
return true;
}
}
Trata-se de um upload de imagens para o servidor.
Tem algum erro no código que esteja causando essa lentidão toda?
obs: Moto é uma classe onde existe um arraylist de files (as imagens).
Estou usando a apache commons net
Agradeço qualquer ajuda.