Erro FTP

Pessoal.

Não sei se é por conta do horário ou se é por alguma outra coisa.

Mas vamos lá. Estou usando o seguinte código:

String nomeArquivo = null;  
        FTPClient ftp = new FTPClient();  
        try {  
            ftp.connect( "ftp.server.com.br" );  
              
            //verifica se conectou com sucesso!  
            if( FTPReply.isPositiveCompletion( ftp.getReplyCode() ) ) {  
                ftp.login( "usuario", "senha" );  
            } else {  
                //erro ao se conectar  
                ftp.disconnect();  
                System.out.println("Conexão recusada");  
                System.exit(1);  
            }  
              
            System.out.println("Conexão aceita");  
            
            String arquivo = "c:\\web\\arquivos\\info.php";
            //uploadFile(arquivo, ftp);
            boolean retorno = false;
    		try {
    			//abre um stream com o arquivo a ser enviado  
    	        InputStream is = new FileInputStream( arquivo );  
    	        //pega apenas o nome do arquivo  
    	        int idx = arquivo.lastIndexOf(File.separator);  
    	        if( idx < 0 ) idx = 0;  
    	        else idx++;  
    	        nomeArquivo = arquivo.substring( idx, arquivo.length() );  
    	        System.out.println(nomeArquivo);
    	        //ajusta o tipo do arquivo a ser enviado  
    	        ftp.setFileType( FTPClient.ASCII_FILE_TYPE);  
    	        System.out.println("Enviando arquivo "+nomeArquivo+"...");  
    	        //faz o envio do arquivo  
    	        System.out.println( ftp.getStatus() );
    	        retorno = ftp.storeFile( nomeArquivo, is );  
    	        System.out.println( ftp.getStatus() );
    	        if( retorno )
    	        	System.out.println("Arquivo "+nomeArquivo+" enviado com sucesso!");
    	        else 
    	        	System.out.println("Arquivo "+nomeArquivo+" NAO enviado !");
    	        
    		} catch (Exception e){
    			e.printStackTrace();
    		}
            
              
            ftp.disconnect();  
            System.out.println("Fim. Tchau!");  
        } catch( Exception e ) {  
            System.out.println("Ocorreu um erro: "+e);  
            System.exit(1);  
        }

Inicialmente o erro era por conta do Firewall do windows que estava ativo.
Agora ele fica dando a mensagem que não conseguiu fazer o upload.

Alguém saberia o porque isso está ocorrendo?

Abraço

Não apresenta nenhum erro no console ou log?

Tentar Usar a classe file para passar o endereço do arquivo e, e seta do servido para onde vai o arquivo!!

Então
A unica mensagem que dá é a de erro que eu cadastrei.
O mais engraçado é que ele cria o arquivo no ftp, porém vazio (tamanho 0 KB).

Este usuario e senha que logo já redireciona o server para a pasta especifica

Alguem tem alguma luz?

Abraço

Eu tive esse problema tenta mudar o tipo de arquivo enviado para binario:

setFileType( FTPClient.BINARY_FILE_TYPE );

No meu problema resolveu

Nada ainda

Continua no mesmo erro

Abraço

Paulo, tenta assim:

package com.example;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FTPSample {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		FTPClient ftp = new FTPClient();
		String host = "ftp.server.com.br";
		String pswd = "senha";
		String user = "usuario";

		try {
			ftp.connect(host);

			if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
				ftp.enterLocalPassiveMode();

				if (ftp.login(user, pswd)) {
					String path = "/src/Test/src/com/example/FTPSample.java";
					File file = new File(path);
					InputStream is = new BufferedInputStream(
							new FileInputStream(file));

					if (!ftp.storeFile("FTPSample.java", is)) {
						Logger.getLogger(FTPSample.class.getName()).log(
								Level.SEVERE, "Falha ao enviar o arquivo");
					} else {
						System.out.println("Sucesso!");
					}
				} else {
					Logger.getLogger(FTPSample.class.getName()).log(
							Level.SEVERE, "Falha de autenticação");
				}
			} else {
				Logger.getLogger(FTPSample.class.getName()).log(Level.SEVERE,
						"Falha de conexão");
			}

			ftp.disconnect();
		} catch (IOException e) {
			Logger.getLogger(FTPSample.class.getName()).log(Level.SEVERE, null,
					e);
		}
	}
}

Assim funcionou
Valeu :slight_smile:

Bom dia amigos,

Sei que o post já faz quase 2 anos, mas estou com a necessidade hoje de fazer o contrário.
Preciso pegar do servidor via Ftp e salvar na máquina local.

E o problema que está acontecendo é o mesmo que o do amigo. Os arquivo vem com 0k.

Alguém sabe como resolver?..


package Programa;
import java.io.File;  
import java.io.FileOutputStream;
import java.io.InputStream;  
import java.io.FileInputStream;  
 import java.io.OutputStream;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;  
import org.apache.commons.net.ftp.FTPClient;  
  
public class Principal {  
    public static void main( String[] args ) {  
        String nomeArquivo = null;
        
        FTPClient ftp = new FTPClient();  
        try {  
            ftp.connect("server"); //aqui estou colocando o IP  
              
            //verifica se conectou com sucesso!  
            if( FTPReply.isPositiveCompletion( ftp.getReplyCode() ) ) {  
                ftp.login("login", "senha");  
            } else {  
                //erro ao se conectar  
                ftp.disconnect();  
                System.out.println("Conexão recusada");  
                System.exit(1);  
            }  
            
           // ftp.enterLocalActiveMode();  
           // ftp.setFileTransferMode(FTPClient.ASCII_FILE_TYPE);  
           // ftp.setFileType(FTPClient.ASCII_FILE_TYPE);  
           
            FTPFile[] files = ftp.listFiles(); 
                   
            for( int i=0; i&lt;files.length; i++ ) {  
              System.out.println( files[i].getName() );  
              ftp.setFileTransferMode(FTPClient.ASCII_FILE_TYPE); 
              ftp.setFileType(FTPClient.ASCII_FILE_TYPE); 
              OutputStream os = new FileOutputStream("aqui o diretório local"+files[i].getName())  ;
              ftp.enterLocalPassiveMode();
              ftp.retrieveFile("aqui o diretório do server", os );
              
             } 
               
              
            ftp.disconnect();  
            System.out.println("Fim. Tchau!");  
        } catch( Exception e ) {  
            System.out.println("Ocorreu um erro: "+e);  
            System.exit(1);  
        } 
        
        
        
    }  
}  

Se alguém puder me ajudar nessa agradeço…

Postei só essa merreca de código aí pra não poluir muito… obrigado a todos>