Web Service p/ Upload e Download de Arquivos

Olá a todos,

por acaso alguém teria um exemplo de Web Service que faça Upload / Download de arquivos?

Veja se isto lhe atende.

http://www.developershome.com/wap/wapUpload/wap_upload.asp?page=jsp3

:okok:

Olá Marcos,

o exemplo q vc me passou permite fazer o upload de arquivos, mas meu problema é fazer isso através de um Web Service.
Já encontrei um exemplo em ASP, mas eu queria um em JAVA.
Ta difícil de encontrar… :sad:

Bem o problema em questão é: afinal quem será o seu cliente, um pda, web ou uma aplicação desktop?

Porque na verdade será o programa cliente que será responsável por obter este arquivo, teu webservice terá que preocupar em apenas pegar este arquivo em um stream e persisti-lo ou fazer alguma operação. Concorda?

:okok:

hum… :roll:

bom primeiro umas perguntas:
tu está desenvolvendo uma aplicação WEB?
o WS é seu, da sua aplicação, ou de outra aplicação que a sua utiliza?

bom não sei se você sabe mas o WS utiliza um protocolo SOAP
de comunicação onde a linguagem é denominada WSDL que nada
mais é que uma definição de estrutura XML para trafegar informação

XML é String

se você for codificar arquivo binário para String fica um tanto grande,
porém é totalmente possível

eu não compreendi, qual a tua real necessidade, o que você está
tentando desenvolver, também não sei como é a sua estrutura
atual do projeto… :roll:

teria como descrever?
acredito que ficará mais facil para poder te ajudar ou mesmo
sugerir algo :wink:

abraços

Ok, vou explicar melhor meu problema…
Preciso desenvolver um WS cuja principal função será inserir dados em tabelas de um bando de dados.
Como isso irá funcionar?
A princípio pensei em disponibilizar um método no WS que recebesse como parâmetro um nome de tabela, e um arquivo (.xml) contendo os dados a serem inseridos.
Mais ou menos assim…

insertData( String tableName, File data )

Só q sou iniciante em WS, e pelo q eu sei não posso criar um método que receba tal parâmetro (File). Ou posso? :slight_smile:
Bom, conversando com a equipe aqui da minha empresa, foi decidido que os dados a serem inseridos nas tabelas seriam “uploadeados” primeiro, através de um outro método do WS, e só depois (com o arquivo de dados já no servidor) uma aplicação cliente do WS poderia ordenar a inserção de dados.
Isso pra garantir um maior controle de todo o processo. Primeiro tenta-se fazer o upload do arquivo de dados e, se ele for realizado com sucesso, tenta-se fazer a inserção na tabela.
Não sei se confundi ainda mais :lol: , mas é +ou- isso q eu preciso.
Se alguém tiver uma idéia melhor de como realizar este processo, ela será bem-vinda.
Valeu pela ajuda.

Bom, comecei a fazer alguns testes aqui, e acho q resolvi uma parte do meu problema…
Fiz um método

uploadFile( String fileName, byte[] bytes )

que recebe como parâmetro o nome do arquivo (que será armazenado temporariamente no servidor) e um array de bytes.
Fiz isso pra JAVA e funcionou perfeitamente.
Mas a minha preocupação é que outras aplicações (Desenvolvidas em outras linguagens) poderão acessar meu WebService.
E aí vem a dúvida… Existe um equivalente a esse array de bytes para as outras linguagens?
Lembrando que, se por acaso vcs perceberem que eu estou no caminho errado, por favor não deixem de me avisar. :lol:

bom quanto ao suporte por outras linguagem…

partindo do principio que se é possivel para a linguagem enviar
um e-mail anexando um arquivo, então essa linguagem provavelmente
podera interagir sem problemas com o seu WS…

lembrando que o envio de e-mail, um arquivo anexado é convertido
para caracteres 8O, sabia disso? :razz:

quanto a array de bytes, bom isso acredito que tenha tambem
porque qualquer manipulação a baixo nivel vai precisar
mexer com arrays de bytes :wink:

abraços

É, tava tudo fuoncionando muito bem pra ser verdade… :roll:
Fiz um teste de upload com um arquivo de 13MB, e olha só no q deu :

Exception in thread “main” java.lang.OutOfMemoryError: Java heap space

Teria q haver um jeito de enviar pedaço por pedaçco do arquivo, sendo este pedaço definido por um buffer, de tamanho configurável.
Só que aí o cliente do WS deveria implementar este controle também, justamente o q eu não queria.

bom você poderia traçar um estratégia, configurar o seu WS
para receber até um determinado tamanho, esse tamanho
seria legal tambem ser enviado no WSDL para o cliente e com isso
no cliente você implementa essa funcionalidade de fragmentação do arquivo…

tem um outro porem tu vai ter que ter alguma forma no servidor onde está
o WS de remontar o arquivo :razz:

É, fiz alguns testes e o limite do arquivo ficou em pouco mais que 4MB.
Por enquanto vou permitir upload de arquivos que tenham no máximo este tamanho…
Tosco? É, concordo… :lol:
Mas por enquanto vai ficar assim.
No meu caso vai ser difícil que um único registro de uma tabela seja maior que este limite.
Acho interessante a fragmentação do arquivo em várias partes, mas eu queria deixar este controle transparente para o cliente.

bom isso é verdade quanto mais transparente
o uso para o cliente melhor :grin:

Estou com o mesmo problema.
vejam se podem me ajudar.

Preciso enviar uma planilha Excel de uma máquina Server (que acessa a base de dados) para uma máquina “Client” via Webservice.

Como fazer isso ?

Caso eu crie um método retornando um byte[], estará trafegando Bytes ou TXT (um txt com 0’s e 1’s no corpo do texto) ??
:roll: Pergunta complicada heim ???

Estou preguntando isso pq estou preocupado com a performance.
Se for TXT vai ficar muito mais pesado do que se fosse binário.

Alguem tem um conhecimento avançado p/ fornecer algumas informações ? Caso precise de mais detalhes é só falar.

Abraço.

Olha, não sou nem um pouco a pessoa mais indicada para te ajudar hehe nunca mexi com Web Service, só me interesso e leio sobre o assunto. E fiquei curioso para saber se existe algo do tipo. Da uma lida nesses links, o primeiro eh ±… o segundo diz que web service não é para isso, e o terceiro me pareceu que existe que é possivel mas não muito usado/pratico, anexar arquivos em mensagens soap (SwA - Soap with Attachment). Mas não sei como fica a integração depois com outras linguagens, etc.

http://forum.java.sun.com/thread.jspa?threadID=722609

http://p2p.wrox.com/topic.asp?TOPIC_ID=9426

http://www.itcourseware.com/Webpdfs/webwebsvj.pdf (pagina 130)

flw

Obrigado luBS,

estou dando uma olhada nos sites que você indicou.
Acabei “driblando” essa necessidade. Mas ainda continuo curioso para saber como resolver isso.