фон! jsp+mysql Не забудьте использовать тип mysql longblob для хранения полей базы данных. Размер blob по умолчанию недостаточен
: id (char) pic (longblob).
Пожалуйста, укажите источник для перепечатки. В настоящее время я сотрудничал с моим доверенным лицом. завершить
исходный BLOB-объект операции. Когда поле должно иметь пустое значение. Проверьте BLOB, что так хлопотно. Вам не нужно так хлопотно использовать
страницу PEPAREPARESTATATATATATATATATATATATATATATATATATATATATATATATATATATATATATORESTATATATATORESTATOMMEMEML страница " 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.*"%>
<html xmlns=" http://www.w3.org/1999/xhtml ">
<голова>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Документ без названия</title>
</голова>
<тело>
<%
String id=request.getParameter("id");
Строка file=request.getParameter("файл");
out.print (идентификатор);
out.print(файл);
FileInputStream str = новый FileInputStream (файл);
out.print(str.available());
java.sql.Подключение к соединению;
java.lang.String strConn;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn= java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
String sql="вставить в значения test(id,pic)(?,?)";
ReadedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1,id);
pstmt.setBinaryStream(2,str,str.available());
пстмт.выполнить();
out.println("Успешно, вы успешно вставили изображение");
пстмт.закрыть();
%>
<a href="readblob.jsp">Просмотреть изображение</a>
<a href="postblob.html">Возврат</a>
</тело>
</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.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<голова>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Документ без названия</title>
</head>
<тело>
<%
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.next())
{
Blob b = rs.getBlob("pic");
int size =(int)b.length();
out.print(размер);
InputStream in=b.getBinaryStream();
байт[] by= новый байт[размер];
response.setContentType("изображение/jpeg");
ServletOutputStream sos = response.getOutputStream();
int bytesRead = 0;
while ((bytesRead = in.read(by)) != -1) {
sos.write(by, 0, bytesRead);
}
в.закрыть();
сос.флеш();
}
%>
</тело>
</html>
************************************************* * ******************
Примечание. При использовании sos.write(by, 0, bytesRead); этот метод выводит содержимое входного потока на новой странице
. другой контент, который будет выводиться на этой странице, вы можете изменить только указанный выше метод на bytesRead = in.read(by));
затем использовать метод out.print(new String(by)); обратите внимание: метод by.toString() нельзя использовать. Этот метод возвращает адрес памяти для вывода содержимого. В MySQL есть типы текстовых полей blob. Размер — 66536. В принципе, этого достаточно, чтобы поместить некоторые мелочи, ха-ха, но теперь, когда цифровые изображения становятся все больше и больше, вы можете использовать только longblob, размер которого составляет 4g. достаточно, чтобы посмотреть фильм.