java 如何使用jsp和servlet将多个图像上传到文件夹中
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/29602430/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to upload multiple images into folder using jsp and servlet
提问by nadeem ahmad
I want to upload multiple images into server folder using jsp and servlet
我想使用 jsp 和 servlet 将多个图像上传到服务器文件夹
I can upload single image but i am unable to upload multiple images
我可以上传单张图片,但我无法上传多张图片
Please help me
请帮我
回答by Naman P
Try bellow code (Apache commons file upload)
尝试以下代码(Apache commons 文件上传)
index.jsp
索引.jsp
<html>
<head><title>Upload page</title></head><body>
<form action="UploadServlet" method="post" enctype="multipart/form-data" name="form1" id="form1">
<center>
<table border="1">
<tr>
<td align="center"><b>Multipale file Uploade</td>
</tr>
<tr>
<td>
Select file: <input name="file" type="file" id="file">
</td>
</tr>
<tr>
<td>
Select file:<input name="file" type="file" id="file">
</td>
<tr>
<td>
Select file:<input name="file" type="file" id="file">
</td>
</tr>
<tr>
<td align="center">
<input type="submit" name="Submit" value="Submit files"/>
</td>
</tr>
</table>
<center>
</form>
</body>
</html>
Or You can also use below code for jsp (if you are using this code press ctrlto select multiple images)
或者您也可以将以下代码用于jsp(如果您使用此代码,请按ctrl选择多个图像)
<html>
<head><title>Upload page</title></head><body>
<form action="UploadServlet" method="post" enctype="multipart/form-data" name="form1" id="form1">
<center>
<table border="1">
<tr>
<td align="center"><b>Multipale file Uploade</td>
</tr>
<tr>
<td>
Specify file: <input name="file" type="file" id="file" multiple>
</td>
</tr>
<tr>
<td align="center">
<input type="submit" name="Submit" value="Submit files"/>
</td>
</tr>
</table>
<center>
</form>
</body>
</html>
And UploadServlet.java
和 UploadServlet.java
package com;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
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 org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
} else {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if (item.isFormField()) {
} else {
try {
String itemName = item.getName();
File savedFile = new File("D:\"+itemName);
item.write(savedFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
}
Hope this helps!!!
希望这可以帮助!!!
回答by Learner
Here is the sample code:
这是示例代码:
Coding for uploadform.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Image Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<form action="FileUploadServlet" method="post" enctype="multipart/form-data">
<table width="400px" align="center" border=0>
<tr>
<td align="center" colspan=2>
Image Details</td>
</tr>
<tr>
<td>First Name </td>
<td>
<input type="input" name="firstname">
</td>
</tr>
<tr>
<td>Last Name </td>
<td>
<input type="input" name="lastname">
</td>
</tr>
<tr>
<td>Image Link: </td>
<td>
<input type="file" name="file">
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name="submit" value="Submit"></td>
</tr>
</table>
</form>
</body>
</html>
You need to set enctype of form tag to "multipart/form-data" it tells that form contain multipart data.
This page contain two text fields for first name and last name and one file type field for files, after submitting the form data send to FileUploadServlet servlet where all other processing is to be done.
Coding for FileUploadServlet.java:
import java.io.PrintWriter;
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("/FileUploadServlet")
@MultipartConfig(fileSizeThreshold=1024*1024*2, // 2MB
maxFileSize=1024*1024*10, // 10MB
maxRequestSize=1024*1024*50)
public class FileUploadServlet extends HttpServlet {
private static final String SAVE_DIR="images";
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, ClassNotFoundException, SQLException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String savePath = "C:" + File.separator + SAVE_DIR;
File fileSaveDir=new File(savePath);
if(!fileSaveDir.exists()){
fileSaveDir.mkdir();
}
String firstName=request.getParameter("firstname");
String lastName=request.getParameter("lastname");
Part part=request.getPart("file");
String fileName=extractFileName(part);
part.write(savePath + File.separator + fileName);
/*
//You need this loop if you submitted more than one file
for (Part part : request.getParts()) {
String fileName = extractFileName(part);
part.write(savePath + File.separator + fileName);
}*/
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306 /UploadFile","root","root");
String query="INSERT INTO customerDetail (first_name, last_name, file) values (?, ?, ?)";
PreparedStatement pst;
pst=con.prepareStatement(query);
pst.setString(1, firstName);
pst.setString(2,lastName);
String filePath= savePath + File.separator + fileName ;
pst.setString(3,filePath);
pst.executeUpdate();
}
catch(Exception e)
{}
}
// file name of the upload file is included in content-disposition header like this:
//form-data; name="dataFile"; filename="PHOTO.JPG"
private String extractFileName(Part part) {
String contentDisp = part.getHeader("content-disposition");
String[] items = contentDisp.split(";");
for (String s : items) {
if (s.trim().startsWith("filename")) {
return s.substring(s.indexOf("=") + 2, s.length()-1);
}
}
return "";
}
}