当前页面: 开发资料首页 → JSP 专题 → JSP向MYSQL数据库BLOB字段插入和显示图片的问题.请高手指点啊!
JSP向MYSQL数据库BLOB字段插入和显示图片的问题.请高手指点啊!
摘要: JSP向MYSQL数据库BLOB字段插入和显示图片的问题.请高手指点啊!
我的这两段代码是插入和显示的,可是显示的时候,总是图片显示不正确(一个X)...我不清楚是不是我的代码有问题啊,或者是请高手指点一下,有没有更好的代码..
谢谢大家,帮帮我吧.
insert.jsp
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*,java.util.*,java.text.*,java.io.*,com.sun.image.codec.jpeg.*" %>
<%
String content = request.getParameter("content");
content=new String(content.getBytes("8859_1"),"gb2312");
String filename = request.getParameter("image");
filename = new String(filename.getBytes("8859_1"),"gb2312");
String detail=request.getParameter("txtmail");
detail=new String(detail.getBytes("8859_1"),"gb2312");
FileInputStream str = new FileInputStream(filename);
//String sql = "insert into image(caption,content,image) values('"+content+"','"+detail+"','"+str+"')";
String sql = "insert into image(content,detail,image) values(?,?,?)";
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/newsissuance?user=root&password=");
PreparedStatement pstmt=conn.prepareStatement(sql);
//pstmt.setInt(1,1);
pstmt.setString(1,content);
pstmt.setString(2,detail);
pstmt.setBinaryStream(3,str,(int)filename.length());
pstmt.executeUpdate();
out.print(sql);
%>
show.jsp
<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.sql.*, javax.sql.*,java.math.*"%>
<%
//String photo_no = request.getParameter("photo_no");
String url="jdbc:mysql://localhost:3306/newsissuance?user=root&password=";
Connection conn = DriverManager.getConnection(url);
try
{
Statement stmt = conn.createStatement();
//String sql = "select * from image where id = "+ photo_no;
String sql = "select * from image where id = 2";
ResultSet rs = stmt.executeQuery(sql);
if (rs.next())
{
Blob b = rs.getBlob("image");
long size = b.length();
//out.print(size);
byte[] bs = b.getBytes(1, (int)size);
response.setContentType("image/jpeg");
OutputStream outs = response.getOutputStream();
outs.write(bs);
outs.flush();
rs.close();
}
else
{
rs.close();
//response.sendRedirect("./images/error.gif");
}
}
finally
{
conn.close();
}
%>
在finally前面弄一段
catch(Excaption e)
{
e.PrintStackTrace();
}
捕捉一下错误,看看有上面错误信息没有?
没有错误信息啊,就是正常的显示.只不过图片显示不出来而已啊!
mei cun shang
Blob photo = rs.getBlob("image");
InputStream in = photo.getBinaryStream();
OutputStream out = response.getOutputStream();
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) != -1) {
out.write(buf, 0, len);
}
in.close();
out.close();