Olá,
Estou com um problema que é o seguinte. Tenho uma Applet rodando num site, e gostaria que qdo a pessoa entrasse nela selecionasse um arquivo do seu hd, e enviasse para mim em um determinado diretório.
Não tenho a minima noção de como fazer isso. Eu já fiz ligações sockets, mas apenas enviando frases e nada mais. São arquivos de tipo .jpg .doc e qlq outro tipo.
ta esse codigo envia um arquivo txt para seu servlet
Abraço parceiro
Applet
importjava.awt.*;importjava.awt.event.*;importjava.net.*;importjava.io.*;importjavax.swing.*;publicclasstesteextendsJAppletimplementsActionListener{JButtonjbutton=null;publicvoidinit(){jbutton=newJButton("Sendfile");jbutton.addActionListener(this);this.getContentPane().add(jbutton);}publicvoidactionPerformed(ActionEventae){if(ae.getSource()==jbutton){try{Filefile=newFile("c:\\teste.txt");// arquivo no meu discoFileInputStreamin=newFileInputStream(file);byte[]buf=newbyte[in.available()];intbytesread=0;Stringtoservlet="http://localhost:8080/AginesReports/lab "; // endereço do meu servletsURLservleturl=newURL(toservlet);URLConnectionservletconnection=servleturl.openConnection();servletconnection.setDoInput(true);servletconnection.setDoOutput(true);servletconnection.setUseCaches(false);servletconnection.setDefaultUseCaches(false);DataOutputStreamout=newDataOutputStream(servletconnection.getOutputStream());while((bytesread=in.read(buf))>-1){out.write(buf,0,bytesread);}out.flush();out.close();in.close();DataInputStreaminputFromClient=newDataInputStream(servletconnection.getInputStream());inputFromClient.close();}catch(Exceptione){e.printStackTrace();}}}
Servlets
importjava.util.Scanner;importjavax.servlet.*;importjavax.servlet.http.*;importjava.io.*;publicclassTestesextendsHttpServlet{//leitura do txtprotectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{try{ServletContextsc=this.getServletContext();Filearquivo=newFile(sc.getRealPath("/WEB-INF/classes/txts/teste.txt"));// salva o arquivo do txt no endereçoScannerinput=newScanner(arquivo);Stringlinha="";while(input.hasNextLine()){linha+=input.nextLine()+"<br>"; System.out.println(linha); } response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<BODY>"); out.println("<P>"+linha+"</P>"); out.println("</BODY>"); out.println("</HTML>");out.close();}catch(IOExceptione){e.printStackTrace();}}// metodo que recebe o arquivo txt do appletpublicvoiddoPost(HttpServletRequestreq,HttpServletResponseres){ServletContextsc=this.getServletContext();try{StringfileName="teste.txt";Stringpath=sc.getRealPath(File.separator)+"/WEB-INF/classes/txts/"+fileName;FileyourFile=newFile(path);FileOutputStreamtoFile=newFileOutputStream(yourFile);DataInputStreamfromClient=newDataInputStream(req.getInputStream());byte[]buff=newbyte[1024];intcnt=0;while((cnt=fromClient.read(buff))>-1){toFile.write(buff,0,cnt);}toFile.flush();toFile.close();fromClient.close();}catch(Exceptione){e.printStackTrace();}}}
king_of_gods
Não quero mel na chupeta não. hehe
Só que não tenho ideia de como fazer.
Vou testar seus códigos agora.
Vlw.
T
thingol
king_of_gods:
Olá,
Estou com um problema que é o seguinte. Tenho uma Applet rodando num site, e gostaria que qdo a pessoa entrasse nela selecionasse um arquivo do seu hd, e enviasse para mim em um determinado diretório.
Só se lembrar que o IE7 com Windows Vista proíbe que um applet ou ActiveX possa fazer isso (acessar um arquivo arbitrário de sua máquina), mesmo você sendo um administrador da máquina.
Isso irá forçar você a não usar applets com IE7 e Windows Vista se seu intuito é o de ler ou escrever em arquivos em qualquer diretório de sua máquina. Viva o Firefox!
king_of_gods
Poxa essa eu não sabia. Mas eu não quero ler o arquivo. Eu só quero transportar o arquivo da maquina X para a maquina Y via internet.
T
thingol
Ora, para transportar alguma coisa você precisa lê-la, não?
king_of_gods
eu sei mas dps q chega eu não quero ler ele
king_of_gods
não não eu vi errado. Desculpem ae Falei bobeira hehe
andredeividi
O nosso amigo thingol quer dizer que para vc enviar o arquivo
vc tem ler o conteudo. depois enviar + ou - assim.
vc testou o codigo?
abraço
king_of_gods
Não estou conseguindo testar. Alguém pode me ajudar?
J
jairosj
Teve a manha !!! mto bom esse exemplo … rodou melhor que Hello World ! Foi de Primeira !!! rs
J
jairosj
Agora queria saber como eu faço para adicionar mais um parâmetro além do arquivo …por exemplo …enviar o arquivo e enviar tb uma string com o título e algumas outras informações?
caio_sope
Show!! Exatamente o que eu precisava. Agora só falta adaptar ao meu código.
Tem como mandar dois arquivos sem precisar fazer dois requests?