¡fondo! jsp+mysql Recuerde utilizar el tipo longblob de mysql para almacenar los campos de la base de datos. El tamaño del blob predeterminado no es suficiente
: id (char) pic (longblob)
Indique la fuente para la reimpresión. complete
la operación original blob Cuando el campo, debe tener un valor vacío. Verifique el BLOB, lo cual es muy problemático. No necesita ser tan problemático para usar la
página PEPAREPARESTATATATATATATATATATATATORESTATOMEMEMEML
.
org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">testblob.jsp
<%@ página contentType="text/html;charset=gb2312"%>
<%@ página import="java.sql.*" %>
<%@ página import="java.util.*"%>
<%@ página import="java.text.*"%>
<%@ página import="java.io.*"%>
<html xmlns=" http://www.w3.org/1999/xhtml ">
<cabeza>
<meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312" />
<título>Documento sin título</título>
</cabeza>
<cuerpo>
<%
ID de cadena=request.getParameter("id");
Archivo de cadena=request.getParameter("archivo");
salida.print(id);
out.print(archivo);
FileInputStream str=nuevo FileInputStream(archivo);
out.print(str.disponible());
java.sql.Conexión de conexión;
java.lang.String strConn;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn= java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
String sql="insertar en valores de prueba(id,pic)(?,?)";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1,id);
pstmt.setBinaryStream(2,str,str.available());
pstmt.execute();
out.println("Éxito, ha insertado una imagen correctamente");
pstmt.close();
%>
<a href="readblob.jsp">Ver imagen</a>
<a href="postblob.html">Volver</a>
</cuerpo>
</html>
********************************************** **********
readblob.jsp
<%@ página contentType="text/html;charset=gb2312"%>
<%@ página import="java.sql.*, javax.sql.*" %>
<%@ página import="java.util.*"%>
<%@ página import="java.text.*"%>
<%@ página import="java.io.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transicional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<cabeza>
<meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312" />
<título>Documento sin título</título>
</cabeza>
<cuerpo>
<%
java.sql.Conexión de conexión;
Conjunto de resultados rs=null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn= java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
Declaración stmt=conn.createStatement();
rs=stmt.executeQuery("seleccione * de la prueba donde id='1'");
si(rs.siguiente())
{
Blob b = rs.getBlob("imagen");
int tamaño =(int)b.longitud();
out.print(tamaño);
InputStream en=b.getBinaryStream();
byte[] por= nuevo byte[tamaño];
respuesta.setContentType("imagen/jpeg");
ServletOutputStream sos = respuesta.getOutputStream();
int bytesLeer = 0;
mientras ((bytesRead = in.read(by)) != -1) {
sos.write(por, 0, bytesRead);
}
cercar();
sos.flush();
}
%>
</cuerpo>
</html>
************************************************** * *******************
Nota: Cuando se usa sos.write(by, 0, bytesRead);, este método genera el contenido del flujo de entrada en una nueva página
. hay otro contenido que se generará en esta página, solo puede cambiar el método anterior a bytesRead = in.read(by));
luego use el método out.print(new String(by)); Atención aquí El método by.toString() no se puede utilizar. Este método devuelve la dirección de memoria del contenido que se va a generar. Hay tipos de área de texto de blob en mysql. El tamaño es 66536. Básicamente, es suficiente para poner algunas cosas pequeñas, jaja, pero ahora que las imágenes digitales son cada vez más grandes, solo puedes usar longblob. suficiente para reproducir una película jaja.