API Ftp

7 respostas
J

Boa tarde a todos…

Estou tentando utilizar a biblioteca commons-net-2.0 para transferencia de arquivos via ftp.

Consigo conectar, porem na transferencia do arquivo para o servidor, recebe a mensagem de ok mas quando consulto no servidor o arquivo nao esta.

Alguem pode me ajudar?!

Segue código que estou executando…

FTPClient ftp = new FTPClient();
        try {
            ftp.connect("www.meudominio.com.br");

            //verifica se conectou com sucesso!
            if( FTPReply.isPositiveCompletion( ftp.getReplyCode() ) ) {
                if (ftp.login( "usuario", "senha" )) {
                    System.out.println("conectado ... ");
                } else 
                    System.out.println("nao conectado ... ");

            } else {
                //erro ao se conectar
                ftp.disconnect();
                System.out.println("Conexão recusada");
                System.exit(1);
            }

            //para cada arquivo informado...
            for( int i=0; i<arquivos.length; i++ ) {
                //abre um stream com o arquivo a ser enviado
                InputStream is = new FileInputStream( arquivos[i] );
                //pega apenas o nome do arquivo
                int idx = arquivos[i].lastIndexOf(File.separator);
                if( idx >< 0 ) idx = 0;
                else idx++;
                nomeArquivo = arquivos[i].substring( idx, arquivos[i].length() );

                //ajusta o tipo do arquivo a ser enviado
                if( arquivos[i].endsWith(".txt") ) {
                    ftp.setFileType( FTPClient.ASCII_FILE_TYPE );
                } else if( arquivos[i].endsWith(".jpg") ) {
                    ftp.setFileType( FTPClient.BINARY_FILE_TYPE );
                } else {
                    ftp.setFileType( FTPClient.ASCII_FILE_TYPE );
                }
                System.out.println("Enviando arquivo "+nomeArquivo+"...");

                // muda o diretorio corrente para /news
//                ftp.changeWorkingDirectory("/public_html");

                //faz o envio do arquivo
//                ftp.storeFile(nomeArquivo, is );
                if (ftp.storeUniqueFile(nomeArquivo, is))
                    System.out.println("transferencia ok");
                else
                    System.out.println("nao transferiu");

                is.close();
                System.out.println("Arquivo "+nomeArquivo+" enviado com sucesso!");
            }

            ftp.disconnect();
            System.out.println("Fim. Tchau!");
        } catch( Exception e ) {
            System.out.println("Ocorreu um erro: "+e);
            System.exit(1);
        }

Obrigado a todos.

7 Respostas

Metaleiro

Fazendo FTP com Java

T

Será que você não copiou as coisas para o diretório errado? Cheque no diretório /home/usuario ou /export/home/usuario ou sei lá qual é o nome do diretório home do usuário que você usou para o FTP.

Metaleiro

[color=darkblue]Tem esse exemplo aqui também:[/color]

Desenvolvendo um Cliente FTP

J

Olá Metaleiro, foi exatamente esse artigo que utilizei para fazer minha função.

Thingol, para evitar problemas estou fazendo o upload direto no diretório raiz da conexão.

Agradeço a atenção.

T

Isso não é suficiente. Pode ser que o servidor FTP esteja redirecionando um arquivo “/tmp/abc.txt” para “/home/usuario/tmp/abc.txt” (por exemplo). Faça o FTP “na mão” usando algum software de FTP para ver o que ocorre.

J

Humm … com outros softwares de FTP eu jogo direto tb e vai blz …

De igual forma, ja tentei colocar em outros diretorios e mesmo assim nao foi …

Vou dar uma revisada nisso pra ver …

Obrigado.

J

Thingol, na verdade esta dando certo cara … porem esta indo com outro nome … pureftpd.xxxxx … nao sei pq!

Eu mando o nome do arquivo, porem nao esta renomeando corretamente…

Mas blz, pelo menos esta indo … vou verificar agora a questão do nome.

Cara, valeu pela ajuda…

Abraço.

Criado 17 de julho de 2009
Ultima resposta 17 de jul. de 2009
Respostas 7
Participantes 3