上次我介绍了mysql数据库中存取图片的方法,详见:
 http://www.blogjava.net/fl1429/archive/2009/05/27/278212.html
 正好这几天又用到了sql server 2000数据库,然而在sql 2000中存取图片和mysql中大部相同,但是思想是一样的,都是在数据库中存二进制,但是还有一种解决方案,就是可以再数据库中存取图片的路径,这样比较简单,我就不介绍了,为了安全起见,还是把图片保存到数据库中了.
 首先注意在mysql中存的字段类型是 blob类型,而在sql 2000中则用image类型,具体步骤见下:
 上传页:upload.jsp
  
         <form action="ImageServlet" method="post" name="form1">
    <p> </p>
    <p> </p>
    <p>头像上传:</p>
    <table width="800" height="136" border="0">
        <tr>
        <td>姓名:</td>
        <td><input type="text" name="name">
        </td>
      </tr>
      <tr>
        <td>上传图片:</td>
        <td><input type="file" name="photo">
        (上传后不可修改)</td>
      </tr>
      <tr>
        <td><input type="submit" name="Submit" value="提交"></td>
          <td><input type="reset" name="Submit2" value="重置"></td>
      </tr>
    </table>
  </form> 
处理的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
  <td width="152" rowspan="3"><img src="ShowServlet?name=feng" width="140" height="140"></td>
 
ref:
http://www.java-tips.org/other-api-tips/jdbc/how-to-store-retrieve-image-to-from-sqlserver.html
http://forums.sun.com/thread.jspa?threadID=5361151
http://java.ittoolbox.com/groups/technical-functional/java-l/insert-image-into-sqlserver-sample-program-157642
http://www.java.happycodings.com/JDBC/code3.html
http://www.cnblogs.com/long/articles/166546.html
	posted on 2009-06-02 15:10 
fl1429 阅读(1374) 
评论(1)  编辑  收藏  所属分类: 
Jsp/Servlet/Javabean