如何把html传过来的图片保存到mysql数据库里并显示在html前端表格里用java代码实现
您可以按照以下步骤来实现将HTML传来的图片保存到MySQL数据库,并在HTML前端表格中显示出来:
-
在MySQL数据库中创建一个表格,用于存储图片。表格至少包含两个字段:id和image_data。id为主键,image_data用于存储图片的二进制数据。
-
在HTML前端页面中,使用form表单上传图片,并将表单提交到后台的Java代码。
-
在Java代码中,使用Servlet来处理表单提交的请求。获取上传的图片数据,可以使用MultipartHttpServletRequest类来实现。将图片数据保存到一个临时文件中。
-
使用Java的文件输入流来读取临时文件的数据,并将二进制数据存储到数据库中的image_data字段。
-
在HTML前端页面中,使用Java代码从数据库中读取图片数据,并将其显示在表格中。可以使用Java的JDBC连接数据库,并执行查询语句来获取图片数据。
以下是一个示例的Java代码实现:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Base64;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/imageUpload")
public class ImageUploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取上传的图片数据
Part filePart = request.getPart("image");
InputStream fileInputStream = filePart.getInputStream();
// 将图片数据保存到临时文件
File tempFile = File.createTempFile("temp", ".jpg");
filePart.write(tempFile.getAbsolutePath());
// 将图片数据存储到数据库中
saveImageToDatabase(tempFile);
// 删除临时文件
tempFile.delete();
// 重定向到HTML前端页面
response.sendRedirect("index.html");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 从数据库中获取图片数据
byte[] imageData = getImageDataFromDatabase();
// 将图片数据转换为Base64编码字符串
String base64Image = Base64.getEncoder().encodeToString(imageData);
// 在HTML前端页面中显示图片
response.setContentType("text/html");
response.getWriter().print("<table><tr><td><img src='data:image/jpeg;base64," + base64Image + "'/></td></tr></table>");
}
private void saveImageToDatabase(File file) {
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
PreparedStatement statement = conn.prepareStatement("INSERT INTO images (image_data) VALUES (?)");
FileInputStream fis = new FileInputStream(file);
statement.setBinaryStream(1, fis);
statement.executeUpdate();
statement.close();
fis.close();
conn.close();
} catch (SQLException | IOException e) {
e.printStackTrace();
}
}
private byte[] getImageDataFromDatabase() {
byte[] imageData = null;
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
PreparedStatement statement = conn.prepareStatement("SELECT image_data FROM images");
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) {
imageData = resultSet.getBytes("image_data");
}
resultSet.close();
statement.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return imageData;
}
}
以上代码示例中,MySQL数据库的连接URL、用户名和密码需要根据实际情况进行修改。同时,根据您的具体需求,可能需要进一步完善代码,例如添加异常处理、图片上传的验证等
原文地址: https://www.cveoy.top/t/topic/hPOx 著作权归作者所有。请勿转载和采集!