[Socket] Enviar imagem para abrir no browser

3 respostas
V

Olá.

Pois bem, como o próprio nome do tópico já deve esclarecer, estou com problemas no meu programa para enviar as imagens e fazer com que o browser (IE e Opera) abra esta imagem.

package Sockets;

import java.io.*;
import java.net.*;

public class ThreadServer extends Thread  {
    private Socket conexao;
    BufferedReader pagina;
    FileInputStream arq2;
    ObjectOutputStream envia_imagem;
    BufferedWriter envia;
    BufferedReader recebe;
    
    ThreadServer (Socket conexao)
    {
        this.conexao = conexao;
    }
    
    public void run()
    {
        try {
            pagina = new BufferedReader ( new FileReader ( "index.htm" )); 
            arq2 = new FileInputStream( "hevequip2.png" );
            byte[] buffer = new byte[arq2.available()];
            arq2.read(buffer);
            envia_imagem = new ObjectOutputStream(conexao.getOutputStream());
            recebe = new BufferedReader( new InputStreamReader(conexao.getInputStream())); 
            envia = new BufferedWriter (new OutputStreamWriter(conexao.getOutputStream()));
            String page = pagina.readLine(); 
            String msgbrowser = recebe.readLine();
            System.out.println (msgbrowser);

            if (msgbrowser.equals("GET / HTTP/1.1"))
            {
               while (page!=null) 
               {
                  envia.write(page); 
                  page = pagina.readLine();
                }
            }

            if (msgbrowser.equals("GET /hevequip2.png HTTP/1.1"))
            {
                envia.write("Content-Type: image/png");
                envia_imagem.writeObject(buffer);
           }

            envia.flush();
            envia_imagem.flush();
            envia_imagem.close();
            conexao.close(); 
            
        }catch (Exception e) { }
    }
}

A parte textual está perfeita, eu só não consigo fazer o browser (IE e Opera) abrir a maldita imagem.

Desde já,
Obrigado pela ajuda.

3 Respostas

Marky.Vasconcelos

Não vi seu código. Mas para abrir uma imagem:

File imagem = //Sua imagem
Desktop.getDesktop().browse(imagem.toURI().toURL());

Falta os try/catchs

T

Não se esqueça que ObjectOutputStream só pode ser usada com um cliente que use ObjectInputStream, o que obviamente não é o caso do browser.

V

Podes me dizer como que eu faço para o browser abrir a imagem? Agora eu não tenho a mínima ideia de como fazer isso. Estava fazendo tudo me baseando nesses ObjectOutputStream.

Valeu.

Criado 7 de junho de 2009
Ultima resposta 8 de jun. de 2009
Respostas 3
Participantes 3