Boa tarde pessoal. Estou precisando da ajuda de vocês.
Tenho uma aplicação onde o usuário escolhe o arquivo de sua máquina através de um JFileChooser e envia para um servidor FTP, criando uma pasta para armazenar este arquivo, até ai beleza !
O problema é que para enviar um arquivo de 2MB esta atividade demora quase 10 min, ou seja, uma perda enorme de tempo.
Ouvi dizer de alguns colegas que trabalham com VB aqui na empresa (só eu trabalho com java aqui) que é possível fazer uma quebra em bytes deste arquivo para depois o enviar para o ftp. Procurei muita coisa sobre isso mas não estou conseguindo implementar o que vi. Vou postar minha classe que faz o acesso a este ftp e peço a ajuda de vocês para me ajudar a resolver este problema. Estou trabalhando em cima dele a horas !
[code]import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.swing.JOptionPane;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPReply;
/**
*
-
@author Rafael
*/
public class ClienteFTP {private String servidor = “Francatalogos FTP”;
FTPClient ftp = new FTPClient();
FTPClientConfig config = new FTPClientConfig();public void inicia(String localArquivo, String nomePasta, String nomeArquivo) {
ftp.configure(config); try { int responder; //Conecta e loga no FTP ftp.connect("ftp.francatalogos.com.br"); ftp.login("francatalogos", "********"); System.out.print(ftp.getReplyString()); responder = ftp.getReplyCode(); ftp.enterLocalPassiveMode(); ftp.setFileTransferMode(FTPClient.BINARY_FILE_TYPE); ftp.setFileType(FTPClient.BINARY_FILE_TYPE); //Obtem o local do arquivo FileInputStream file = new FileInputStream(localArquivo); //Verifica se o caminho/pasta existe. boolean isDirectory = ftp.changeWorkingDirectory("T&TSistemas/" + nomePasta); if (!isDirectory) { //se não existir cria a pasta ftp.makeDirectory("T&TSistemas/" + nomePasta); } ftp.changeWorkingDirectory("T&TSistemas/" + nomePasta); File f = new File(localArquivo); nomeArquivo = f.getName(); salvaArquivo(nomeArquivo, file); if (!FTPReply.isPositiveCompletion(responder)) { ftp.disconnect(); JOptionPane.showMessageDialog(null, "Não foi possível conectar a " + servidor + "."); System.exit(1); } ftp.logout(); } catch (IOException io) { io.printStackTrace(); JOptionPane.showMessageDialog(null, "Erro ServidorFTP" + io); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); System.out.println("Desconectado !"); } catch (IOException io) { } } }
}
private void salvaArquivo(String nomeArquivo, FileInputStream file) throws IOException {
//Verifica se o arquivo foi salvo(storeFile).
if (ftp.storeFile(nomeArquivo, file)) {
JOptionPane.showMessageDialog(null, “Arquivo armazenado com sucesso.”);
} else {
JOptionPane.showMessageDialog(null, “Não foi possível armazenar o arquivo.”);
ftp.logout();
ftp.disconnect();
}
}
}[/code]
Obrigado desde já pessoal, boa tarde !