jsp 用servlet上传图片 mysql_jsp如何上传照片到mysql,再查询在jsp中显示
时间: 2024-01-21 13:16:42 浏览: 146
实现上传图片到 MySQL 的步骤如下:
1. 在前端页面中添加文件上传控件。
2. 在后端编写 Servlet 代码,将上传的图片保存到服务器上的某个目录中。
3. 将图片的路径和名称插入到 MySQL 数据库中。
4. 在 JSP 页面中查询 MySQL 数据库中的图片信息,并将其显示在页面上。
以下是实现上传图片到 MySQL 的示例代码:
1. 在前端页面中添加文件上传控件
```html
<form method="post" enctype="multipart/form-data" action="UploadServlet">
Select a file: <input type="file" name="file"><br>
<input type="submit" value="Upload">
</form>
```
2. 在后端编写 Servlet 代码,将上传的图片保存到服务器上的某个目录中。
```java
@WebServlet("/UploadServlet")
@MultipartConfig
public class UploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String savePath = "upload";
File fileSaveDir = new File(savePath);
if (!fileSaveDir.exists()) {
fileSaveDir.mkdir();
}
Part part = request.getPart("file");
String fileName = getFileName(part);
part.write(savePath + File.separator + fileName);
String filePath = savePath + File.separator + fileName;
// 将图片的路径和名称插入到 MySQL 数据库中
insertImage(filePath, fileName);
}
private String getFileName(Part part) {
String contentDispositionHeader = part.getHeader("content-disposition");
String[] elements = contentDispositionHeader.split(";");
for (String element : elements) {
if (element.trim().startsWith("filename")) {
return element.substring(element.indexOf('=') + 1).trim().replace("\"", "");
}
}
return null;
}
private void insertImage(String filePath, String fileName) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
String sql = "INSERT INTO images (name, path) VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, fileName);
pstmt.setString(2, filePath);
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
3. 在 JSP 页面中查询 MySQL 数据库中的图片信息,并将其显示在页面上。
```html
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
stmt = conn.createStatement();
String sql = "SELECT * FROM images";
rs = stmt.executeQuery(sql);
while(rs.next()) {
String name = rs.getString("name");
String path = rs.getString("path");
%>
<img src="<%=path%>/<%=name%>" /><br>
<%
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
%>
```
注意:上述代码仅供参考,需要根据实际业务需求进行修改和完善。
阅读全文