2016-12-08 2 views
0

이미지를 표시하려면이 코드가 있지만 작동하지 않습니다. 나에게 작은 정사각형의 이미지를 표시하지 않습니다. 나는 대답을 찾고 있었고, 찾을 수 없었습니다. 누군가 나를 도와주세요.JSP 파일에서 이미지 BLOB 유형의 MySQL을 표시 할 수없는 이유는 무엇입니까?

Show.jsp

<%@ page import="java.sql.*" %> 
<%@ page import='java.io.InputStream' %> 
<%@ page import='java.io.OutputStream' %> 
<% 
String login = "root"; 
String password = ""; 
String url = "jdbc:mysql://localhost/dbimagenes"; 
Connection conn = null; 
Statement statement = null; 
ResultSet rs = null; 
int nBytes=0; 
%> 
<html><style type="text/css"> 
<!-- 
body { 
background-color: #F5f5f5; 
} 
--> 
</style><body> 
    <h1>Imagen desde MySQL</h1> 
<table> 
    <tr><td> 
<% 
Class.forName("com.mysql.jdbc.Driver").newInstance(); 
conn = DriverManager.getConnection(url, login, password); 
statement = conn.createStatement(); 
rs = statement.executeQuery("SELECT imagen FROM t_imagenes where id='2'"); 
try{ 
if(rs.next()){ 
response.setContentType("image/jpeg"); 
InputStream is = rs.getBinaryStream(1); 
OutputStream aux= response.getOutputStream(); 
out.println("jajaja"); 

byte [] buffer = new byte[4096]; 
for (;;) { 
nBytes = is.read(buffer); 
if (nBytes == -1) 
break; 

aux.write(buffer, 0, nBytes); 

} 

is.close(); 
aux.flush(); 
aux.close(); 


}else{ 

throw new SQLException("image not found"); 
} 
rs.close(); 
} catch (SQLException e) { out.println("Imagen no encontrada");} 

out.println("no se muestra"); 
%> 
     </td></tr></table> 

<p> Imagen</p> 
<a href="index.html">PRINCIPAL</a> 
</body></html> 
MySQL의에 이미지를 저장하는 내 방법은이 방법이다

:

Insert.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@include file="conexion.jsp" %> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <h1>Insertar</h1> 
     <% 
     String nombre=request.getParameter("txtnombre"); 
     String marca=request.getParameter("txtmarca"); 
     String imagen=request.getParameter("txtimagen"); 

     if(nombre!=null && marca!=null && imagen!=null){ 
      String qry ="insert into t_imagenes(nombre,marca,imagen) values('"+nombre+"','"+marca+"','"+imagen+"')"; 
      sql.executeUpdate(qry); 
      out.print("Datos Registrados " 
        + "<a href='index.jsp'>REGRESAR</a>"); 

     }else{ 

     %> 
     <form name="frmimagenes" method="post" action="insertar.jsp"> 
      nombre: <input type="text" name="txtnombre"/><br/> 
      marca: <input type="text" name="txtmarca"/><br/> 
      imagen: <input type="file" name="txtimagen" value="" size="50" /><br/> 
      <input type="submit" value="Guardar"> 
     </form> 

     <%}//else%> 
    </body> 
</html> 

답변

0

하면 표시 할 이미지 태그 img를 사용해야합니다 html의 이미지 (나는 다음 코드를 테스트하지 않았다. 오류가있는 경우 조정한다.)

<%@ page import="java.sql.*" %> 
<%@ page import='java.io.InputStream' %> 
<%@ page import='java.io.OutputStream' %> 
<%@ page import='java.io.ByteArrayOutputStream' %> 
<%@ page import='org.apache.commons.codec.binary.Base64' %> 

<% 
String login = "root"; 
String password = ""; 
String url = "jdbc:mysql://localhost/dbimagenes"; 
Connection conn = null; 
Statement statement = null; 
ResultSet rs = null; 
int nBytes=0; 
%> 
<html><style type="text/css"> 
<!-- 
body { 
background-color: #F5f5f5; 
} 
--> 
</style><body> 
    <h1>Imagen desde MySQL</h1> 
<table> 
    <tr><td> 
<% 
Class.forName("com.mysql.jdbc.Driver").newInstance(); 
conn = DriverManager.getConnection(url, login, password); 
statement = conn.createStatement(); 
rs = statement.executeQuery("SELECT imagen FROM t_imagenes where id='2'"); 

String url = "data:image/jpeg;base64,"; 

try{ 
if(rs.next()){ 
InputStream is = rs.getBinaryStream(1); 
OutputStream aux = new ByteArrayOutputStream(); 
out.println("jajaja"); 

byte [] buffer = new byte[4096]; 
for (;;) { 
nBytes = is.read(buffer); 
if (nBytes == -1) 
break; 

aux.write(buffer, 0, nBytes); 

} 

is.close(); 
aux.flush(); 

url += new String(Base64.encodeBase64(aux.toByteArray())); 

aux.close(); 

}else{ 

throw new SQLException("image not found"); 
} 
rs.close(); 
} catch (SQLException e) { out.println("Imagen no encontrada");} 

out.println("no se muestra"); 
%> 
<img src="<%=url%>" /> 
     </td></tr></table> 

<p> Imagen</p> 
<a href="index.html">PRINCIPAL</a> 
</body></html>