jsp 上传图片 mysql_jsp如何上传照片到mysql,再查询在jsp中显示
时间: 2023-08-15 09:07:09 浏览: 89
jsp如何上传照片到mysql,再查询在jsp中显示
4星 · 用户满意度95%
要实现在 JSP 中上传图片到 MySQL 并且查询显示,可以按照以下步骤进行:
1. 在 MySQL 中创建一个表,用于存储图片的信息,包括图片文件名、文件类型、文件大小和二进制数据等字段。
2. 在 JSP 页面中使用表单元素的 `input` 标签实现文件上传功能,例如:
```
<form action="upload.jsp" method="post" enctype="multipart/form-data">
<input type="file" name="photo">
<input type="submit" value="上传">
</form>
```
3. 在 JSP 页面中编写上传文件的处理程序,读取上传文件的二进制数据并将其存储到 MySQL 数据库中,例如:
```
<%@ page import="java.io.*, java.sql.*" %>
<%
String fileName = request.getParameter("photo");
File file = new File(fileName);
byte[] fileData = new byte[(int) file.length()];
FileInputStream fis = new FileInputStream(file);
fis.read(fileData);
fis.close();
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
PreparedStatement ps = conn.prepareStatement("INSERT INTO photos (fileName, fileType, fileSize, fileData) VALUES (?, ?, ?, ?)");
ps.setString(1, fileName);
ps.setString(2, "image/jpeg");
ps.setInt(3, fileData.length);
ps.setBytes(4, fileData);
ps.executeUpdate();
ps.close();
conn.close();
%>
```
4. 在 JSP 页面中编写查询图片的处理程序,从 MySQL 数据库中读取图片的二进制数据并将其显示在页面上,例如:
```
<%@ page import="java.io.*, java.sql.*" %>
<%
String id = request.getParameter("id");
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
PreparedStatement ps = conn.prepareStatement("SELECT * FROM photos WHERE id = ?");
ps.setInt(1, Integer.parseInt(id));
ResultSet rs = ps.executeQuery();
if (rs.next()) {
response.setContentType(rs.getString("fileType"));
response.setContentLength(rs.getInt("fileSize"));
OutputStream out = response.getOutputStream();
InputStream in = rs.getBinaryStream("fileData");
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
in.close();
out.flush();
out.close();
}
rs.close();
ps.close();
conn.close();
%>
```
在以上代码中,第一个 JSP 页面是上传图片的页面,将上传的文件存储到 MySQL 数据库中;第二个 JSP 页面是查询图片的页面,从 MySQL 数据库中读取图片的二进制数据并将其显示在页面上。注意,为了避免 SQL 注入攻击,建议使用 PreparedStatement 来执行 SQL 语句。
阅读全文