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.
Podem me ajudar?
Que mel na chupeta é ???
ta esse codigo envia um arquivo txt para seu servlet
Abraço parceiro
Applet
[code]import java.awt.;
import java.awt.event. ;
import java.net .;
import java.io . ;
import javax.swing.*;
public class teste extends JApplet implements ActionListener
{
JButton jbutton = null;
public void init()
{
jbutton = new JButton("Send file");
jbutton.addActionListener(this);
this.getContentPane().add(jbutton);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource() == jbutton)
{
try
{
File file = new File("c:\\teste.txt");// arquivo no meu disco
FileInputStream in = new FileInputStream(file);
byte[] buf=new byte[in.available()];
int bytesread = 0;
String toservlet = "http://localhost:8080/AginesReports/lab "; // endereço do meu servlets
URL servleturl = new URL(toservlet);
URLConnection servletconnection = servleturl.openConnection();
servletconnection.setDoInput(true);
servletconnection.setDoOutput(true);
servletconnection.setUseCaches(false);
servletconnection.setDefaultUseCaches(false);
DataOutputStream out=new DataOutputStream(servletconnection.getOutputStream());
while( (bytesread = in.read( buf )) > -1 )
{
out.write( buf, 0, bytesread );
}
out.flush();
out.close();
in.close();
DataInputStream inputFromClient = new DataInputStream(servletconnection.getInputStream());
inputFromClient.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
[/code]
Servlets
[code]import java.util.Scanner;
import javax.servlet.;
import javax.servlet.http. ;
import java.io .*;
public class Testes extends HttpServlet {
//leitura do txt
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
ServletContext sc = this.getServletContext();
File arquivo = new File(sc.getRealPath("/WEB-INF/classes/txts/teste.txt")); // salva o arquivo do txt no endereço
Scanner input = new Scanner(arquivo);
String linha = “”;
while(input.hasNextLine()) {
linha += input.nextLine() +" ";
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 (IOException e) {
e.printStackTrace();
}
}
// metodo que recebe o arquivo txt do applet
public void doPost(HttpServletRequest req,HttpServletResponse res) {
ServletContext sc = this.getServletContext();
try {
String fileName = "teste.txt";
String path = sc.getRealPath(File.separator)+"/WEB-INF/classes/txts/"+fileName;
File yourFile = new File(path);
FileOutputStream toFile = new FileOutputStream( yourFile );
DataInputStream fromClient = new DataInputStream( req.getInputStream() );
byte[] buff = new byte[1024];
int cnt = 0;
while( (cnt = fromClient.read( buff )) > -1 ) {
toFile.write( buff, 0, cnt );
}
toFile.flush();
toFile.close();
fromClient.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}[/code]
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.
[quote=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.
[/quote]
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!
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.
Ora, para transportar alguma coisa você precisa lê-la, não?
eu sei mas dps q chega eu não quero ler ele
não não eu vi errado. Desculpem ae Falei bobeira hehe
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
Não estou conseguindo testar. Alguém pode me ajudar?
jairosj
Março 20, 2008, 10:34am
#11
Teve a manha !!! mto bom esse exemplo … rodou melhor que Hello World ! Foi de Primeira !!! rs
jairosj
Março 20, 2008, 10:46am
#12
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?
Show!! Exatamente o que eu precisava. Agora só falta adaptar ao meu código.
Tem como mandar dois arquivos sem precisar fazer dois requests?
Abraço!