พื้นหลัง! jsp+mysql อย่าลืมใช้ประเภท longblob ของ mysql เพื่อจัดเก็บฟิลด์ฐานข้อมูล ขนาดหยดเริ่มต้นไม่เพียงพอ
: id (char) pic (longblob)
โปรดระบุแหล่งที่มาสำหรับการพิมพ์ซ้ำ ในเวลานี้ ฉันร่วมมือกับคนสนิทของฉัน
ดำเนินการ blob ดั้งเดิมให้เสร็จสิ้น
เมื่อฟิลด์คุณต้องมีค่าว่าง ตรวจสอบ BLOB ซึ่งยุ่งยากมากในการใช้
หน้า
PEPAREPARESTATATATATATATATATATATATATATATATATATATATATATATORESTATATATATORESTATOMEMEML
" http://www.w3 org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">testblob.jsp
<%@ หน้า contentType="text/html;charset=gb2312"%>
<%@ หน้านำเข้า = "java.sql.*" %>
<%@ เพจ import="java.util.*"%>
<%@ หน้านำเข้า = "java.text.*"%>
<%@ เพจนำเข้า = "java.io.*"%>
http://www.w3.org/1999/xhtml ">
<หัว>
************************************************ **********
readblob.jsp
<%@ หน้า contentType="text/html;charset=gb2312"%>
<%@ หน้านำเข้า = "java.sql.*, javax.sql.*" %>
<%@ เพจ import="java.util.*"%>
<%@ หน้านำเข้า = "java.text.*"%>
<%@ เพจนำเข้า = "java.io.*"%>
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
http://www.w3.org/1999/xhtml ">
<หัว>
<ร่างกาย>
-
java.sql.การเชื่อมต่อการเชื่อมต่อ;
ResultSet rs=null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn= java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
คำสั่ง stmt=conn.createStatement();
rs=stmt.executeQuery("เลือก * จากการทดสอบโดยที่ id='1'");
ถ้า(rs.ถัดไป())
-
หยด b = rs.getBlob("รูป");
ขนาด int =(int)b.length();
ออกพิมพ์(ขนาด);
InputStream ใน=b.getBinaryStream();
ไบต์ [] โดย = ไบต์ใหม่ [ขนาด];
response.setContentType("รูปภาพ/jpeg");
ServletOutputStream sos = response.getOutputStream();
int ไบต์อ่าน = 0;
ในขณะที่ ((bytesRead = in.read(by)) != -1) {
sos.write (โดย, 0, bytesRead);
-
ใน.ปิด();
sos.ฟลัช();
-
-
ร่างกาย>
************************************************** * ******************
หมายเหตุ: เมื่อใช้ sos.write(by, 0, bytesRead); เมธอดนี้จะส่งออกเนื้อหาในอินพุตสตรีมในหน้าใหม่
หากมี เป็นเนื้อหาอื่นที่จะส่งออกในหน้านี้คุณสามารถเปลี่ยนวิธีการข้างต้นเป็น bytesRead = in.read(by));
จากนั้นใช้วิธี out.print(new String(by)) เพื่อส่งออกผลลัพธ์ ข้อควรสนใจที่นี่ ไม่สามารถใช้เมธอด by.toString() ได้ วิธีนี้จะส่งคืนที่อยู่หน่วยความจำของเนื้อหาที่จะส่งออก มีพื้นที่ข้อความแบบหยดใน mysql ขนาดคือ 66536 โดยพื้นฐานแล้วใส่ของเล็กๆ น้อยๆ ก็พอแล้ว 555 แต่ตอนนี้ภาพดิจิทัลเริ่มใหญ่ขึ้นเรื่อยๆ คุณสามารถใช้ขนาด longblob ได้เท่านั้น พอจะเล่นหนังได้ ฮ่าๆ