如何在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);  
    }  
}