以二进制的形式从数据库中存取图片

 如题!当然了这种方法在实际开发当中是一般不用的,因为将图片存到数据库的读取效率会很低,这里只是

分享一下这种方法:

以二进制的形式将图片写入数据库

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();

    }

%>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值