关于 向Mysql 插入 Blob字段 转

本文介绍了一个简单的Java Web应用程序,该程序演示了如何使用JSP和Java Servlet技术实现图片上传及从数据库中读取的功能。具体包括设置数据库连接、处理文件上传、将图片保存到数据库以及从数据库中检索图片并显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  

 

testblob.jsp

<%@ page contentType="text/html;charset=gb2312"%>  <%@ page import="java.sql.*" %> <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> <%@ page import="java.io.*"%>  <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>test blob</title> </head> <body> <% java.sql.Connection conn; java.lang.String strConn; Class.forName("org.gjt.mm.mysql.Driver").newInstance(); conn= java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root",""); %>

<%

InputStream str=request.getInputStream();

out.print("<br> File size :"+str.available());

 String sql="insert into test(id,pic) values(?,?)"; PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.setString(1,"1"); pstmt.setBinaryStream(2,str,str.available()); pstmt.execute();

out.println("Success,You Have Insert an Image Successfully"); pstmt.close();

%> <a href="readblob.jsp">查看图片</a> <a href="postblob.html">返回</a> </body> </html>

 

readblob.jsp

<%@ page contentType="text/html;charset=gb2312"%>  <%@ page import="java.sql.*, javax.sql.*" %> <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> <%@ page import="java.io.*"%>  <html >  <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>Read Blob</title> </head>

<body> <%   java.sql.Connection conn; ResultSet rs=null; Class.forName("org.gjt.mm.mysql.Driver").newInstance(); conn= java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root",""); Statement stmt=conn.createStatement(); rs=stmt.executeQuery("select * from test where id='1'");

if(rs.next()) { Blob b = rs.getBlob("pic"); int size =(int)b.length(); out.print(size);

InputStream in=b.getBinaryStream(); byte[] by= new byte[size]; response.setContentType("image/jpeg");

ServletOutputStream sos = response.getOutputStream(); int bytesRead = 0; while ((bytesRead = in.read(by))!= -1){      sos.write(by, 0, bytesRead); }

in.close(); sos.flush(); } %> </body> </html>

注意 mysql的 blob 有 3种类型 一种是 blob 2的16次方(65536)才60多k 一种是 longblob2的32次方(4G) 还有一种是 textArea类型 2的16次方(65536)

注意哦否则只能插入 一半哦!!!!

textArea 时

##############################

response.setContentType("image/jpeg");

ServletOutputStream sos = response.getOutputStream(); int bytesRead = 0; while ((bytesRead = in.read(by))!= -1){      sos.write(by, 0, bytesRead); }

 

换成

response.setContentType("text/html");

in.read(by);

out.print(new String(by));

就可以输出 到网页了

in.close(); sos.flush();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值