FTP arquivo corrompido

4 respostas
G

O arquivo enviado ao servidor ftp, especialmente imagens jpg, ficam com 1 bit a menos que o original, acredito que o fato de o servidor ftp estar em um sistema unix, o byte "0x0A" esteja sendo convertido para "0x0D 0x0A". Estou usando commons net para o envio, e tentei setar o fileTransferMode para BLOCK_TRANSFER_MODE e o fileType para BINARY_FILE_TYPE, mas não surtiram efeitos, os arquivos de imagens continuam com 1 bit a menos.

public void inserir(InputStream input, String nomeArquivo, String pasta){
		try {
			
			ftp.changeWorkingDirectory(pastaPadrao+"/"+ pasta);
			ftp.setFileTransferMode(ftp.BLOCK_TRANSFER_MODE);
			ftp.setFileType(ftp.BINARY_FILE_TYPE);
			if(ftp.storeFile(nomeArquivo, input)){
				System.out.println("Arquivo armazenado!");
			}else {
				System.out.println("Arquivo não armazenado!");
			}
			ftp.changeWorkingDirectory(pastaPadrao);
		} catch (Exception e) {
			// TODO: handle exception
		}
	}

Alguma dica ?

4 Respostas

E

Se você usar o comando FTP de linha de comando, quais são exatamente os comandos necessários para poder transmitir os arquivos sem problemas?

Dica: não sete BLOCK_TRANSFER_MODE - isso serve apenas para fazer transferência via FTP para mainframes (já ouviu falar de “record length” e “block size”, que tipicamente são 80 e 6000, em mainframes?)

G

Pela linha de comando seria normal, get +nome_do_arquivo, so teria que setar o modo binario antes “binary”.

ps: obrigado pela dica, realmente não necessito do BLOCK_TRANSFER_MODE.

E

Bom, então deve haver algum problema na sua InputStream. Como é que você a criou? Usou um FileInputStream (que não deve corromper nada) ou usou algo mais complicado?

G

Quanto ao stream, n tem problemas, o size esta correto. O problema está qnd envio o arquivo pro ftp.

Criado 26 de outubro de 2009
Ultima resposta 26 de out. de 2009
Respostas 4
Participantes 2