如何在jsp和servlet中将多个图像上传到mysql
我正在尝试使用下面的代码创建以下问题(图像到文本)的匹配如何在jsp和servlet中将多个图像上传到mysql,mysql,jsp,file-upload,Mysql,Jsp,File Upload,我正在尝试使用下面的代码创建以下问题(图像到文本)的匹配 package TeachChapter; import java.io.IOException; import java.io.InputStream; import java.sql.*; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annot
package TeachChapter;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
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("/fileUpload")
@MultipartConfig(maxFileSize = 16177215) // upload file up to 16MB
public class ImagesADDToDBServlet extends HttpServlet {
private static final long serialVersionUID = -1623656324694499109L;
public ImagesADDToDBServlet() {
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// gets values of text fields
String firstName = request.getParameter("firstName");
String lastName = request.getParameter("lastName");
InputStream inputStream = null;
// obtains the upload file part in this multipart request
Part filePart = request.getPart("photo");
if (filePart != null) {
// debug messages
String header=filePart.getHeader("content-disposition");
String filename = header.substring(header.indexOf("filename=\"")).split("\"")[1]; //getting filename
System.out.println(filePart.getName());
System.out.println(filePart.getSize());
System.out.println(filePart.getContentType());
System.out.println(filename);
// obtains input stream of the upload file
inputStream = filePart.getInputStream();
}
String message = null; // message will be sent back to client
try {
// constructs SQL statement
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Connection con =DriverManager.getConnection("jdbc:mysql://localhost:3306/raptor1_5","root","");
String sql = "INSERT INTO contacts (first_name, last_name, photo) values (?, ?, ?)";
PreparedStatement statement = con.prepareStatement(sql);
statement.setString(1, firstName);
statement.setString(2, lastName);
if (inputStream != null) {
// fetches input stream of the upload file for the blob column
statement.setBlob(3, inputStream);
}
// sends the statement to the database server
int row = statement.executeUpdate();
if (row > 0) {
message = "Image is uploaded successfully into the Database";
}
} catch (SQLException ex) {
message = "ERROR: " + ex.getMessage();
ex.printStackTrace();
}
// sets the message in request scope
request.setAttribute("Message", message);
// forwards to the message page
getServletContext().getRequestDispatcher("/ImagesAdddToDBREsut.jsp").forward(
request, response);
}
}
MyCSS.css
<style type="text/css">
#container {
width: 600px;
}
#container div {
float: left;
height: 300px;
width: 300px;
}
</style>
有人告诉我如何将5张上传的图片插入数据库吗 插入5张图片与插入1张基本相同。你哪里有问题?在Servlet中,还是在Ajax中?或者你不是在做Ajax?你是如何提交表格的?或者您没有表单?@developerwjk我只想使用Ajax,但我不知道如何将这5个图像传递给servlet或jsp?@developerwjk当我添加单个图像时,我使用form action=“servletName”并使用Part filePart=request.getPart(“文件名”)获取图像;但是,如何使用ajax调用一次将这5个图像传递给servlet或jsp,以及如何在servlet或jsp中获取所有图像?这就是我要问的..它的作用是一样的。您只需要使用多个
,并按照第一个步骤将它们全部连接到ajax。并为它们指定不同的名称,这样就可以对每个调用使用独立的request.getPart(name)
调用,或者使用request.getParts()
并运行整个集合。
document.querySelector('#files').addEventListener('change', handleFileSelect, false);
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// alert("1");
// Loop through the FileList and render image files as thumbnails.
for (var i = 0, f; f = files[i]; i++) {
// Only process image files.
if (!f.type.match('image.*')) {
continue;
}
var reader = new FileReader();
reader.onload = (function(theFile) {
return function(e) {
var count=$('#imginsert').val();
if(count==1){
//alert("if");
$('#Image1').attr("src",e.target.result);
$('#imginsert').val('2');
$('#ImgAtxt1').before("<br><br>");
}
else if(count==2)
{
//alert("else if 1");
$('#Image2').attr("src",e.target.result);
$('#imginsert').val('3');
$('#ImgAtxt2').before("<br><br><br>");
}
else if(count==3)
{
//alert("else if 2");
$('#Image3').prop("src",e.target.result);
$('#imginsert').val('4');
$('#ImgAtxt3').before("<br><br><br>");
}
else if(count==4)
{
$('#Image4').prop("src",e.target.result);
$('#imginsert').val('5');
$('#ImgAtxt4').before("<br><br><br><br>");
}
else if(count==5)
{
$('#Image5').prop("src",e.target.result);
$('#imginsert').val('6');
$('#ImgAtxt5').before("<br><br><br><br>");
}
else
{
alert("You can upload only 5 images.");
}
};
})(f);
// Read in the image file as a data URL.
reader.readAsDataURL(f);
}
}
package TeachChapter;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
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("/fileUpload")
@MultipartConfig(maxFileSize = 16177215) // upload file up to 16MB
public class ImagesADDToDBServlet extends HttpServlet {
private static final long serialVersionUID = -1623656324694499109L;
public ImagesADDToDBServlet() {
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// gets values of text fields
String firstName = request.getParameter("firstName");
String lastName = request.getParameter("lastName");
InputStream inputStream = null;
// obtains the upload file part in this multipart request
Part filePart = request.getPart("photo");
if (filePart != null) {
// debug messages
String header=filePart.getHeader("content-disposition");
String filename = header.substring(header.indexOf("filename=\"")).split("\"")[1]; //getting filename
System.out.println(filePart.getName());
System.out.println(filePart.getSize());
System.out.println(filePart.getContentType());
System.out.println(filename);
// obtains input stream of the upload file
inputStream = filePart.getInputStream();
}
String message = null; // message will be sent back to client
try {
// constructs SQL statement
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Connection con =DriverManager.getConnection("jdbc:mysql://localhost:3306/raptor1_5","root","");
String sql = "INSERT INTO contacts (first_name, last_name, photo) values (?, ?, ?)";
PreparedStatement statement = con.prepareStatement(sql);
statement.setString(1, firstName);
statement.setString(2, lastName);
if (inputStream != null) {
// fetches input stream of the upload file for the blob column
statement.setBlob(3, inputStream);
}
// sends the statement to the database server
int row = statement.executeUpdate();
if (row > 0) {
message = "Image is uploaded successfully into the Database";
}
} catch (SQLException ex) {
message = "ERROR: " + ex.getMessage();
ex.printStackTrace();
}
// sets the message in request scope
request.setAttribute("Message", message);
// forwards to the message page
getServletContext().getRequestDispatcher("/ImagesAdddToDBREsut.jsp").forward(
request, response);
}
}