خلفية! jsp+mysql تذكر استخدام نوع longblob من mysql لتخزين حقول قاعدة البيانات. حجم blob الافتراضي ليس كافيًا
: id (char) pic (longblob)
يرجى الإشارة إلى مصدر إعادة الطباعة في هذا الوقت، لقد تعاونت مع صديقتي أكمل
العملية الأصلية blob عندما يكون الحقل، يجب أن يكون لديك قيمة فارغة. تحقق من BLOB، وهو أمر مزعج للغاية. لا تحتاج إلى أن تكون مزعجًا جدًا لاستخدام
صفحة PEPAREPARESTATATATATATATATATATATATATATATATATORESTATOMEMEML " http://www.w3
.
org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">testblob.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%>
http://www.w3.org/1999/xhtml ">
<الرأس>
********************************************* **********
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.*"%>
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
http://www.w3.org/1999/xhtml ">
<الرأس>
<الجسم>
<%
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"، "")؛
البيان stmt=conn.createStatement();
rs=stmt.executeQuery("اختر * من الاختبار حيث المعرف='1'");
إذا (rs.next ())
{
Blob b = rs.getBlob("pic");
int size =(int)b. length();
طباعة(حجم);
InputStream in=b.getBinaryStream();
بايت[] بواسطة= بايت جديد[حجم];
Response.setContentType("image/jpeg");
ServletOutputStream sos = Response.getOutputStream();
int بايت القراءة = 0;
بينما ((bytesRead = in.read(by)) != -1) {
sos.write(by, 0, bytesRead);
}
in. Close();
sos.flush();
}
%>
الجسم>
*************************************************************************************************************************************************************************** * ******************
ملاحظة: عند استخدام sos.write(by, 0, bytesRead);، تقوم هذه الطريقة بإخراج المحتوى الموجود في تدفق الإدخال في صفحة جديدة
إذا كان هناك إذا كان هناك محتوى آخر سيتم إخراجه على هذه الصفحة، يمكنك فقط تغيير الطريقة المذكورة أعلاه إلى bytesRead = in.read(by));
ثم استخدم طريقة out.print(new String(by)); انتبه هنا لا يمكن استخدام طريقة by.toString(). تقوم هذه الطريقة بإرجاع عنوان الذاكرة للمحتوى المراد إخراجه. هناك أنواع نصية كبيرة الحجم في mysql. الحجم هو 66536. في الأساس، يكفي وضع بعض الأشياء الصغيرة، هاها ولكن الآن بعد أن أصبحت الصور الرقمية أكبر وأكبر، يمكنك فقط استخدام longblob، وهو 4g يكفي للعب فيلم هاها.