厚积薄发———jsp中读取blob字段&oracle
来源:互联网 发布:网络唤醒主板设置 编辑:程序博客网 时间:2024/05/21 09:54
<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*" errorPage="" %> <%@ page import="java.io.*"%> <%@ page import="java.io.FileOutputStream"%> <%@ page import="java.io.BufferedOutputStream"%> <%@ page import="java.sql.Blob"%> <%@ page import="java.sql.Connection"%> <%@ page import="java.sql.DriverManager"%> <%@ page import="java.sql.ResultSet"%> <%@ page import="java.sql.Statement"%> <%@ page import="java.util.logging.Level"%> <%@ page import="com.fr.base.FRContext"%> <% String driver = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@192.168.100.169:1521:orcl10g"; String user = "test"; String password = "test123"; Connection connection = null; OutputStream output = null; //从请求中获取id的值 String fileid = com.fr.base.CodeUtils.cjkDecode((String)request.getParameter("id")); try { //连接数据库 Class.forName(driver); connection = DriverManager.getConnection(url, user, password); Statement statement = connection.createStatement(); //定义数据库执行语句,并执行 String sql = "SELECT image FROM TEST.IMAGETEST where ID = '" + fileid + "'"; ResultSet rs = statement.executeQuery(sql); while(rs.next()){ //读取存放在blob字段中的内容 Blob blob = rs.getBlob(1); byte[] b = blob.getBytes(1, (int) blob.length()); //文件下载 response.setContentType("application/application/x-msdownload; charset=GBK"); //设置为文件流输出的方式下载 response.addHeader("Content-Disposition", "attachment; filename=out.txt"); //设置下载的文件名称 response.setContentLength((int) blob.length()); //设置下载的文件大小 output = response.getOutputStream(); output.write(b); output.flush(); } //下载完毕后将使用的资源关闭 statement.close(); connection.close(); response.getOutputStream().close(); } catch (Exception e) { e.printStackTrace(); } %>