以二进制的形式从数据库中存取图片
2009-06-25 08:45
429 查看
如题!当然了这种方法在实际开发当中是一般不用的,因为将图片存到数据库的读取效率会很低,这里只是
分享一下这种方法:
分享一下这种方法:
以二进制的形式将图片写入数据库
package Servlet; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.sql.PreparedStatement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import Qng.DataBaseConnection; public class InsertPic extends HttpServlet { private static final long serialVersionUID = -4220703706022012000L; public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("GB2312"); String path = "index.jsp"; String name = request.getParameter("name").replace('//', '/'); PreparedStatement pstmt = null; DataBaseConnection dbc = null; dbc = new DataBaseConnection(); FileInputStream fis; File file; try { file = new File(name); fis = new FileInputStream(file); pstmt = dbc.getConnection().prepareStatement( "insert into pic(image,title) values(?,?)"); pstmt.setBinaryStream(1, fis, (int) file.length()); pstmt.setString(2,request.getParameter("title")); System.out.println("success inserted image into database"); pstmt.execute(); pstmt.close(); } catch (Exception e) { e.printStackTrace(); } path = "ss.jsp"; request.getRequestDispatcher(path).forward(request, response); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { this.doPost(request, response); } } |
以二进制的形式将图片从入数据库中读取出来 <%@ page contentType="text/html; charset=gb2312"%> <%@ page import="java.io.*,java.sql.*,Qng.*"%> <% int id=Integer.parseInt(request.getParameter("id")); String sql = " SELECT image FROM pic WHERE id="+id; PreparedStatement pstmt = null; DataBaseConnection dbc = null; dbc = new DataBaseConnection(); try { pstmt = dbc.getConnection().prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); if (rs.next()) { Blob b = rs.getBlob("image"); long size = b.length(); 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("index.jsp"); } } finally { pstmt.close(); dbc.close(); } %> |
相关文章推荐
- ASP.NET中让图片以二进制的形式存储在数据库中
- 详解vb.net实现图片以二进制形式上传和读取到数据库
- 用Java或Jsp向数据库存取二进制图片
- ASP.NET实现图片以二进制的形式存入数据库
- 通过Java或Jsp向数据库存取二进制图片
- 详解vb.net实现图片以二进制形式上传和读取到数据库
- 以二进制形式将图片保存到数据库,用存诸过程实现(完整代码+sql语句)
- 图片二进制数据库的存取和读取...
- ASP.NET中让图片以二进制的形式存储在数据库中
- 基于winform的二进制图片数据的存取(用于数据库照片的读写处理)
- 图片二进制数据库的存取和读取...
- C++使用SQLite3心得 -- sqlite3以二进制形式存取图片(MFC,CppSQLite3U封装类)
- ASP.NET中让图片以二进制的形式存储在数据库中
- 以二进制形式存取图片
- ASP.NET中让图片以二进制的形式存储在数据库中
- 详解vb.net实现图片以二进制形式上传和读取到数据库
- 基于winform的二进制图片数据的存取(用于数据库照片的读写处理)
- C# winfrom 存取图片到数据库(二进制,image)
- 将图片以二进制形式存入数据库中
- BinaryImage:直接显示以二进制形式存储在数据库中的图片