Hintergrund! jsp+mysql Denken Sie daran, den Longblob-Typ von MySQL zum Speichern der Datenbankfelder zu verwenden. Die Standard-Blob-Größe reicht nicht aus
: id (char) pic (longblob)
Bitte geben Sie die Quelle für den Nachdruck an Schließen Sie
den ursprünglichen Vorgangab
.Wenn das Feld leer ist, müssen Sie den BLOB nicht so mühsam überprüfen.
org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<Kopf>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Unbenanntes Dokument</title>
</head>
<Körper>
<form action="testblob.jsp" method="post" >
<table width="291" border="1">
<tr>
<td width="107">id </td>
<td width="168"><input name="id" type="text" /></td>
</tr>
<tr>
<td>Datei</td>
<td><input name="file" type="file" /></td>
</tr>
<tr>
<td><input type="submit" value="Submit"/></td>
</tr>
</table>
</form>
</body>
</html>
************************************************** * *************
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 ">
<Kopf>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Unbenanntes Dokument</title>
</head>
<Körper>
<%
String id=request.getParameter("id");
String file=request.getParameter("file");
out.print(id);
out.print(file);
FileInputStream str=new FileInputStream(file);
out.print(str.available());
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","");
String sql="in test(id,pic)-Werte(?,?) einfügen";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1,id);
pstmt.setBinaryStream(2,str,str.available());
pstmt.execute();
out.println("Erfolgreich, Sie haben ein Bild erfolgreich eingefügt");
pstmt.close();
%>
<a href="readblob.jsp">Bild anzeigen</a>
<a href="postblob.html">Zurück</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.*"%>
<!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 ">
<Kopf>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Unbenanntes Dokument</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","");
Anweisung 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= neues Byte[Größe];
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>
************************************************** * ******************
Hinweis: Bei Verwendung von sos.write(by, 0, bytesRead); gibt diese Methode den Inhalt im Eingabestream auf einer neuen Seite
aus Sollen andere Inhalte auf dieser Seite ausgegeben werden, können Sie die obige Methode nur in ändern: bytesRead = in.read(by));
Verwenden Sie dann die Methode out.print(new String(by));, um das Ergebnis auszugeben Achtung hier: Die Methode by.toString() kann nicht verwendet werden. Diese Methode gibt die Speicheradresse des auszugebenden Inhalts zurück. Es gibt Blob-Textbereichstypen in MySQL. Im Grunde reicht es aus, ein paar kleine Dinge zu platzieren, aber jetzt, da digitale Bilder immer größer werden, können Sie nur noch Longblob verwenden Haha, genug, um einen Film abzuspielen.