<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--注意 get提交方式;文件大小有限制--%>
<form action="${pageContext.request.contextPath}/upload.do" enctype="multipart/form-data" method="post">
上传者:<input type="text" name="user">
<div><input type="file" name="myFile0"></div>
<div><input type="file" name="myFile1"></div>
<input type="submit" value="上传提交">
<input type="reset" value="重置页面">
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
提示信息===>${message}
</body>
</html>
package com.beijing.servlet.File;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.ProgressListener;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.List;
import java.util.UUID;
public class FileUploadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.upload(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
private void upload(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
if (!ServletFileUpload.isMultipartContent(req)) {
return;
}
String message = null;
try {
String uploadPath = this.getServletContext().getRealPath("WEB-INF/upload");
File uploadFile = new File(uploadPath);
if (!uploadFile.exists()) {
uploadFile.mkdir();
}
String tempPath = this.getServletContext().getRealPath("WEB-INF/temp");
File tempFile = new File(tempPath);
if (!tempFile.exists()) {
tempFile.mkdir();
}
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
diskFileItemFactory.setSizeThreshold(1024 * 1024);
diskFileItemFactory.setRepository(tempFile);
ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
servletFileUpload.setProgressListener(new ProgressListener() {
@Override
public void update(long l, long l1, int i) {
System.out.println("文件总大小==>" + l1 + " -已经上传==>" + l);
double dl = Double.parseDouble(new Long(l).toString());
double dl1 = Double.parseDouble(new Long(l1).toString());
System.out.println("文件已经上传==>" + (double)(Math.round(dl/dl1*1000))/10 + "%");
}
});
servletFileUpload.setHeaderEncoding("utf-8");
servletFileUpload.setFileSizeMax(3 * 1024 * 1024);
servletFileUpload.setSizeMax(100 * 1024 * 1024);
List<FileItem> fileItems = servletFileUpload.parseRequest(req);
for (FileItem fileItem : fileItems) {
if (fileItem.isFormField()) {
String name = fileItem.getName();
String value = fileItem.getString("utf-8");
System.out.println(name + "<--->" + value);
} else {
String uploadName = fileItem.getName();
System.out.println("注意上传的文件名==>" + uploadName);
if (uploadName == null || uploadName.trim().equals("")) {
continue;
}
String realName = uploadName.substring(uploadName.lastIndexOf("/") + 1);
String nameSuffix = uploadName.substring(uploadName.lastIndexOf(".") + 1);
System.out.println("实际文件名==>" + realName + "后缀文件类型=>" + nameSuffix);
String uploadFileID = UUID.randomUUID().toString();
String realPath = uploadPath + "/" + uploadFileID;
File realFile = new File(realPath);
if (!realFile.exists()) {
realFile.mkdir();
}
InputStream inputStream = fileItem.getInputStream();
FileOutputStream out = new FileOutputStream(realPath + "/" + realName);
byte[] bytes = new byte[1024];
int len = 0;
while ((len = inputStream.read(bytes)) > 0) {
out.write(bytes, 0, len);
}
out.close();
inputStream.close();
message = "<==上传成功==>";
fileItem.delete();
}
}
} catch (FileUploadException e) {
message = "失败!!!";
e.printStackTrace();
}
req.setAttribute("message",message);
req.getRequestDispatcher("jsp/file/fileUploadInfo.jsp").forward(req,resp);
}
}