fundo! jsp + mysql Lembre-se de usar o tipo longblob do mysql para armazenar os campos do banco de dados O tamanho do blob padrão não é suficiente
: id (char) pic (longblob)
Por favor, indique a fonte para reimpressão. Neste momento, cooperei com meu confidente para. complete
a operação original blob Quando o campo, você deve ter um valor vazio Verifique o BLOB, o que é tão problemático Você não precisa ser tão problemático para usar a
página PEPAREPARESTATATATATATATATATATATATATATATATATATATATATATATATORESTATATATATORESTATOMEMEMEML
.
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 ">
<cabeça>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Documento sem título</title>
</head>
<corpo>
<%
String id=request.getParameter("id");
String arquivo=request.getParameter("arquivo");
saída.print(id);
saída.print(arquivo);
FileInputStream str=new FileInputStream(arquivo);
out.print(str.disponível());
conexão java.sql.Connection;
java.lang.String strConn;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn=java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
String sql="inserir em valores de teste(id,pic)(?,?)";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1,id);
pstmt.setBinaryStream(2,str,str.disponível());
pstmt.execute();
out.println("Sucesso, você inseriu uma imagem com sucesso");
pstmt.close();
%>
<a href="readblob.jsp">Ver imagem</a>
<a href="postblob.html">Retornar</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 ">
<cabeça>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Documento sem título</title>
</head>
<corpo>
<%
conexão java.sql.Connection;
Conjunto de resultados rs=null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn=java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
Instrução stmt=conn.createStatement();
rs=stmt.executeQuery("selecione * do teste onde id='1'");
se(rs.próximo())
{
Blob b = rs.getBlob("foto");
tamanho interno =(int)b.comprimento();
out.print(tamanho);
InputStream in=b.getBinaryStream();
byte[] por= novo byte[tamanho];
resposta.setContentType("imagem/jpeg");
ServletOutputStream sos = resposta.getOutputStream();
int bytesLeitura = 0;
while ((bytesRead = in.read(by)) != -1) {
sos.write(by, 0, bytesRead);
}
in.close();
sos.flush();
}
%>
</body>
</html>
************************************************** * ******************
Nota: Ao usar sos.write(by, 0, bytesRead);, este método gera o conteúdo do fluxo de entrada em uma nova página,
se houver
.é outro conteúdo a ser gerado nesta página, você só pode alterar o método acima para, bytesRead = in.read(by));
em seguida, use o método out.print(new String(by)); atenção aqui O método by.toString() não pode ser usado. Este método retorna o endereço de memória do conteúdo a ser gerado. Existem tipos de textarea blob no mysql O tamanho é 66536. Basicamente, basta colocar algumas coisas pequenas, haha Mas agora que as fotos digitais estão cada vez maiores, você só pode usar longblob. o suficiente para passar um filme Haha.