隨筆-167  評論-65  文章-0  trackbacks-0

          上次我介紹了mysql數(shù)據(jù)庫中存取圖片的方法,詳見:

          http://www.aygfsteel.com/fl1429/archive/2009/05/27/278212.html

          正好這幾天又用到了sql server 2000數(shù)據(jù)庫,然而在sql 2000中存取圖片和mysql中大部相同,但是思想是一樣的,都是在數(shù)據(jù)庫中存二進(jìn)制,但是還有一種解決方案,就是可以再數(shù)據(jù)庫中存取圖片的路徑,這樣比較簡單,我就不介紹了,為了安全起見,還是把圖片保存到數(shù)據(jù)庫中了.

          首先注意在mysql中存的字段類型是 blob類型,而在sql 2000中則用image類型,具體步驟見下:

          上傳頁:upload.jsp

                   <form action="ImageServlet" method="post" name="form1">
              <p>&nbsp;</p>
              <p>&nbsp;</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

          write by feng
          posted on 2009-06-02 15:10 fl1429 閱讀(1357) 評論(1)  編輯  收藏 所屬分類: Jsp/Servlet/Javabean

          評論:
          # re: java sql server 2000存取圖片 2010-07-13 21:28 | as
          謝謝你   回復(fù)  更多評論
            
          已訪問數(shù):
          free counters
          主站蜘蛛池模板: 阜新市| 娄底市| 合山市| 南陵县| 阜新市| 隆尧县| 邵武市| 共和县| 疏附县| 穆棱市| 澜沧| 凤阳县| 宝清县| 平乐县| 哈巴河县| 商河县| 自贡市| 潼关县| 宁河县| 福泉市| 广河县| 普格县| 武威市| 泾阳县| 上林县| 井冈山市| 张家口市| 大同市| 栖霞市| 汽车| 佛冈县| 汽车| 蚌埠市| 蒙山县| 吉木乃县| 晋中市| 岳阳市| 兰州市| 丹阳市| 衡阳市| 康乐县|