Exibir foto usando SQLUtil

0 respostas
W

Boa tarde Sr(a)s !

Preciso exibir um campo foto em uma página de retorno.

O Bean esta assim :

public class GeocodigoFoto {

 private byte[] foto;

    public byte[] getFoto() {
        return foto;
    }

    public void setFoto(byte[] foto) {
        this.foto = foto;
    }





}
Método DAO para obter a foto :
public static GeocodigoFoto obterFotoLocal(String codlocal) throws SQLException
  {          Conexao.setPOOL_NAME(Constantes.JNDI);
            String sql = " SELECT FOTO FROM LOCALIDADE "+
                         " WHERE (COD_LOCAL = ?)";
            GeocodigoFoto geocodigofoto = (GeocodigoFoto)SQLUtil.obtemObjeto(sql, GeocodigoFoto.class, new Object[] { codlocal});
            return geocodigofoto;
 }

Servelet para exibir a foto :

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try {
            String strLocal = request.getParameter("codlocal");
            GeocodigoFoto geocodigofoto = GeocodigosDao.obterFotoLocal(strLocal);
            response.setContentType("image/jpeg");
            response.addHeader("Content-Disposition","filename=localFoto.jpg");
            byte[] fileBytes;
            fileBytes = geocodigofoto.getFoto();
            synchronized(response){
    	    response.getOutputStream().write(fileBytes);
	    	response.flushBuffer();
           System.out.println(strLocal);
         }
	}
	catch (Exception e)
    {
        String strPath = getServletContext().getRealPath("img");
        File file = new File(strPath,"localsemfoto.jpg");

        FileInputStream entrada = new FileInputStream (file);
        ByteArrayOutputStream saida = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];

        while (entrada.read(buffer) != -1){
            saida.write(buffer);
        }
      	byte[] fileBytes;
        fileBytes = saida.toByteArray();
        synchronized(response){
        response.getOutputStream().write(fileBytes);
     	response.flushBuffer();
      }
    System.out.println("sem foto");
    }
   }

Porém ocorre o seguinte erro :

Não foi possível selecionar os dados da Classe;

Alguém sabe o motivo ?

Criado 27 de abril de 2010
Respostas 0
Participantes 1