Oi, Michel.
Primeiramente, voce tera que incluir no teu browser
alguns parametros para o tag <form>.
Sao eles:
enctype='multipart/form-data' method=post
action='nomedasuaservlet';
Depois, um outro tag para informacao do arquivo que
voce quer efetuar upload:
<input type=file name="nomedoseuarquivo">
seguido de um botao submit:
<input type=submit value='ok'>
Esta eh a parte mais facil. Agora a coisa pega fogo.
O browser vai tentar abrir uma stream de bytes com a
servlet, que por sua vez, deve abrir uma stream
binaria e ir recebendo os bytes e gravando em um outro
arquivo a partir de uma stream de saida.
Para entrada e saida dos bytes:
public void doPost(HttpServletRequest req,
HttpServletResponse res) throws
ServletException,IOException {
res.setContentType("text/html");
PrintWriter pw=res.getWriter();
ServletInputStream si=req.getInputStream();
byte[] b=new byte[4096];
int c=0;
File f=new File("nomedoseuarquivo");
FileOutputStream fo=new FileOutputStream(f);
while ((c=si.read(b,0,b.length)))!=-1)
// veja nota abaixo sobre o header do arquivo
fo.write(b,0,c);
fo.close();
si.close();
pw.println("Transferencia efetuada com sucesso...");
pw.close();
}
Quando o arquivo eh transferido a partir do browser,
um header com algumas informacoes sobre
boundary(limites dos arquivos, pois pode haver
transferencia multipla) sao passadas. Eh preciso
eliminar essas informacoes, ou seja, inserir algoritmo
no inicio do loop que analise os bytes recebidos,
detect o inicio e final do header e nao grave na
stream de saida. Isso onde inserir o comentario acima.
Bom, isso fica pra voce. O basico da transferencia e o
trecho de codigo acima. Existem solucoes prontas, como
uma servlet de upload da O'Reilley(cheque em
www.servlet.com. Acho que eh por la que voce vai
achar).
Andre.
http://www.jinsight.com
--- Michel Bertrand <[EMAIL PROTECTED]>
wrote:
> Ol� pessoal !
>
> Gostaria de montar um Servlet que recebesse um
> arquivo
> em qualquer formato ( digo ".exe", ".txt",".doc" etc
> ), por�m n�o
> sei como proceder neste caso.
>
> Al�m de receber o arquivo, gostaria de grava-lo na
> m�q.
> que est� rodando o Servlet ( no servidor ).
>
> Algu�m tem uma dica de como fazer isto ?
>
> Obrigado !
>
> Michel.
>
__________________________________________________
Do You Yahoo!?
Send instant messages & get email alerts with Yahoo! Messenger.
http://im.yahoo.com/
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------