Como conferir se o arquivo foi enviado com sucesso via FTP?

15 respostas
jremerich

Daew gaela??

Seguinte, eu tenho um programa que faz a manutenção de um site de fotografias. O programa faz o seguinte:

  • Redimensiona as fotos para 2 tamanhos (thumb e um de 400x400)
  • Cadastra os eventos e as fotos no banco
  • Envia as fotos via FTP para o site

A minha dúvida é:

Como conferir se a foto foi enviada com sucesso? é com o método “storeFile”?

Pois eu faço isso, porém ele fica com vária conexões abertas, e o que eu quero é enviar de 3 em 3.

Entenderam?

Aguardo!

15 Respostas

P

Velho, nao sei como funciona isso em FTP mas vou te dar uma ideia.

Ve a existencia do metodo Exists no caso… Se o arquivo X existir, então…

Ou então, você pode escrever o noime do arquivo em um txt toda vez que um arquivo conseguir ser escrito.

P

A primeira pesquisada no google deu:

" boolean 	existsFile(java.lang.String workDir, java.lang.String fileName)
          Checks if a file exists on the FTP server."
jremerich

Certo.

Bom, vou explicar o que aconteceu e aew vcs me ajudam.

dêem uma olhada em www.artconfotografias.com.br lá vcs vão ver as fotos que o meu programa trata, mas se repararem bem algumas delas ficam ruins, com defeito. Eu achei que fosse do FTP, mas ele só envia as fotos quando ele termina os tratamentos.

São uma média de 300 fotos, e eu estava pensando em ser algum rolo com a memória. Se vocês puderem me ajudar, eu agradeço.

T

Quando você fez o FTP, lembrou-se de usar o modo “binário”? Se não usou o modo binário as fotos vão chegar estragadas mesmo.

T

Um sintoma disso é que você vê o tamanho original das fotos em bytes e compara com o tamanho das fotos que chegaram no servidor. Se ficou diferente é que as fotos foram corrompidas por você não ter ativado o modo “binário” no envio via FTP.

P

Só pra saber:

Modo binário no caso envia o arquivo com todos os detalhes, correto? Sem perda de dados? E já o outro, pode enviar o arquivo com perda?

P

Opa cara,

Eu tava olhando as fotos, tu não acha que é melhor procurar algum método que trate no minimo as fotos? Anti-aliasing, vê se tem isso.

Tem um cara lá que eu não sei se ele é tão branco ou se tá claro demais, mas cara, o cara tá fantasmagorico.

Não acha melhor tratar a foto antes de mandar?

T

FTP tem essa história de “modo binário” e “modo texto” devido a uma herança do tempo do MS-DOS.
No começo, só existia o FTP em máquinas UNIX, e nessas máquinas as linhas dos arquivos-texto são separadas pelo caracter LF (0x10, ou “\n” para o Java).
Quando o pessoal do MS-DOS (e do Windows também) começou a usar FTP, começaram a reclamar que os arquivos-texto deveriam vir no formato deles, ou seja, as linhas separadas por CR+LF (caracteres 0x13 e 0x10, ou “\r\n” para o Java). Então, para satisfazer a esses reclamões, inventaram o “modo texto” (que é o padrão no FTP) para que os arquivos fossem convertidos do formato MS-DOS para o formato UNIX (e vice-versa) quando fossem transferidos de uma máquina MS-DOS (ou Windows) para Unix.

Só que isso, como você deve ter percebido, dá problemas quando os arquivos não são texto e sim imagens.

Portanto, mande novamente as suas fotos, mas no modo BINÁRIO (que não faz essa tradução das imagens). OK?

A propósito, a tal foto “fantasmagórica” é devido à corrupção das imagens, devida à transferência em modo texto.

jremerich

Sergio Figueras:
Opa cara,

Eu tava olhando as fotos, tu não acha que é melhor procurar algum método que trate no minimo as fotos? Anti-aliasing, vê se tem isso.

Tem um cara lá que eu não sei se ele é tão branco ou se tá claro demais, mas cara, o cara tá fantasmagorico.

Não acha melhor tratar a foto antes de mandar?

É uma né cara… Mas assim, como é um trabalho para um fotógrafo profissional, ele vai tratar e retocar as fotos antes de enviar.

Aquelas ali foram lançadas no susto, pois o evento tinha sido lancado um dia antes e as fotos estavam sendo prometidas.

Mas vo ver isso mais à frente, pois terei que fazer um gerenciamento das imagens com códigos e tals…

mas foi uma boa sacada o lance do modo binário, eu nem me atei à este detalhe, vlw galera, vo testa ao meio dia e do um retorno à vcs! Vlw galera!!!

jremerich

Bom… já que entramos no assunto de tratamento de imagens, tem como eu descobrir se a imagem é vertical ou horizontal?

Pois, não sei se notaram, as fotos na vertical não ficaram corretas, e isso é feio.

Nas câmeras eu sei que tem um dispositivo com fluido que detecta se a foto foi batida na horizontal ou na vertical, mas eu não sei se ele grava esta informação na imagem.

Se vcs souberem como fazer isso, eu agradeço.

T

Se a câmara faz isso, então ela grava sim. Experimente pegar algumas dessas fotos, mostrá-las no Windows Explorer, pedir suas propriedades (clique com o botão direito) e ver que a resolução é, por exemplo, 2048 x 4096 ou 4096 x 2048 - dependendo se for “paisagem” ou “retrato”).

jremerich

thingol:
Se a câmara faz isso, então ela grava sim. Experimente pegar algumas dessas fotos, mostrá-las no Windows Explorer, pedir suas propriedades (clique com o botão direito) e ver que a resolução é, por exemplo, 2048 x 4096 ou 4096 x 2048 - dependendo se for “paisagem” ou “retrato”).

Pois então… A orientação fica a mesma do explorer, mas nem todas as fotos já vêm corretas, mas se colocar o cartão na câmera, a foto será exibida corretamente…

é doido, mas isso é frufru só… heheheh

A parada é que não deu o binary. Como eu faço paa usar o modo binário?

Eu usei este tutorial para fazer o FTP:

Porém aí não ensina como usar os modos de transferencia, então eu chutei e coloquei:

conn.setFileTransferMode(FTPClient.BINARY_FILE_TYPE)

onde conn é a variável que contém a conexão. Mas acho que não é isso. Alguem tem alguma luz?

T

Uai, deveria ser isso mesmo. Por que é que você não tentou?

Leia sempre a documentação dos pacotes que você vai usar. Essa é a diferença entre quem só programa e quem consegue fazer as coisas. Faz mais de 20 anos que lido com linguagens de programação e nunca, nunca mesmo, faço nada sem consultar a documentação - não gosto de fazer as coisas sem saber o que estou fazendo.

jremerich

hehehe, era só eu ler os comentários… hehehe

Esta logo abaixo, ele diz pra usar setFileType e não setFileTransferMode como eu usei!

Fui atraz da documentação e achei uma carraga de coisa que desmitificou isso pra mim…

Vou fazer mais uns testes e logo mais a noite eu os aviso!

Vlw galera!

jremerich

So pra registar…

eu estava lendo a documentação, como indicação do amigo thingol, e vi que setFileTransferMode é para usar o modo ativo, passivo e afins…

Vlw a força!

Criado 28 de maio de 2008
Ultima resposta 29 de mai. de 2008
Respostas 15
Participantes 3