上次我介绍了mysql数据库中存取图片的方法,详见:
正好这几天又用到了sql server 2000数据库,然而在sql 2000中存取图片和mysql中大部相同,但是思想是一样的,都是在数据库中存二进制,但是还有一种解决方案,就是可以再数据库中存取图片的路径,这样比较简单,我就不介绍了,为了安全起见,还是把图片保存到数据库中了.
首先注意在mysql中存的字段类型是 blob类型,而在sql 2000中则用image类型,具体步骤见下:
上传页:upload.jsp
头像上传:
姓名: | |
上传图片: | (上传后不可修改) |
处理的servlet:ImageServlet
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out=response.getWriter();
String name=request.getParameter("name");
String path=request.getParameter("photo");
int len;
String query;
PreparedStatement pstmt;
Connection conn=null;try{
ConnectSqlserver connectSqlserver=new ConnectSqlserver();
conn=connectSqlserver.openConnection();
File file=new File(path);
FileInputStream fis=new FileInputStream(file);
len=(int)file.length();
query=("insert into applys(name,photo) VALUES(?,?)");
pstmt=conn.prepareStatement(query);
pstmt.setString(1,name);//Method used to insert a stream of bytes
pstmt.setBinaryStream(2, fis, len);
pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}
out.flush();
out.close();
}
显示图片的servlet:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection conn=null;
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");//PrintWriter out=response.getWriter();
byte[] fileBytes;
String query="";try{
ConnectSqlserver connectSqlserver=new ConnectSqlserver();
conn=connectSqlserver.openConnection();
query="select photo from applys where name = 'feng'";
Statement state=conn.createStatement();
ResultSet rs=state.executeQuery(query);if(rs.next())
{
fileBytes=rs.getBytes("photo");
System.out.println(fileBytes);//OutputStream targetFile=new FileOutputStream("d://new.JPG");
ServletOutputStream targetFile=response.getOutputStream();
targetFile.write(fileBytes);
targetFile.close();
}
}
catch (Exception e)
{
e.printStackTrace();
}//out.flush();//out.close();
}
显示图片的jsp:view.jsp
ref:
write by feng
posted on 2009-06-02 15:10 fl1429 阅读(1247) 评论(1) 编辑 收藏 所属分类: Jsp/Servlet/Javabean