Como envio um arquivo via Applet

12 respostas
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.

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?

12 Respostas

andredeividi

Que mel na chupeta é ???

ta esse codigo envia um arquivo txt para seu servlet

Abraço parceiro

Applet

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 )) &gt -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();
             }
            
            
         }
     }

Servlets

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() +&quot;<br>";
                System.out.println(linha);
            }
            
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println("&lt;HTML&gt;");
            out.println("&lt;BODY&gt;");
            out.println("<P>"+linha+"</P>");
            out.println("&lt;/BODY&gt;");
            out.println("&lt;/HTML&gt;&quot;);
            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 = &quot;teste.txt&quot;;
            String path = sc.getRealPath(File.separator)+&quot;/WEB-INF/classes/txts/&quot;+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 )) &gt -1 ) {
                toFile.write( buff, 0, cnt );
            }
            toFile.flush();
            toFile.close();
            fromClient.close();
            
        } catch(Exception e) {
            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

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

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

Teve a manha !!! mto bom esse exemplo … rodou melhor que Hello World ! Foi de Primeira !!! rs

J

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?

Abraço!

Criado 10 de julho de 2007
Ultima resposta 1 de out. de 2012
Respostas 12
Participantes 5