upload.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<base href="<%=request.getContextPath()+"/"%>>">
<style type="text/css">
input[type="submit"] {
outline: none;
border-radius: 5px;
cursor: pointer;
background-color: #31B0D5;
border: none;
width: 70px;
height: 35px;
font-size: 20px;
}
img {
border-radius: 50%;
}
form {
position: relative;
width: 200px;
height: 200px;
}
input[type="file"] {
position: absolute;
left: 0;
top: 0;
height: 200px;
opacity: 0;
cursor: pointer;
}
</style>
<script type="text/javascript">
function prev(event) {
var img = document.getElementById("prevView");
var file = event.files[0];
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
img.setAttribute("src", this.result);
}
}
</script>
</head>
<body>
<form action="fileUploadServlet" method="post" enctype="multipart/form-data">
上传的图片或文件: <img src="2.jpg" alt="" width="200" height="200" id="prevView">
<input type="file" name="pic" id="" value="" onchange="prev(this)" multiple/>
输入文件名称: <input type="text" name="name"><br/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
FileUploadServlet
package com.sparrow.servlet;
import com.sparrow.utils.WebUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
public class FileUploadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("FileUploadServlet被调用了");
if (ServletFileUpload.isMultipartContent(req)) {
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
servletFileUpload.setHeaderEncoding("utf-8");
try {
List<FileItem> list = servletFileUpload.parseRequest(req);
for (FileItem fileItem : list) {
if (fileItem.isFormField()) {
String name = fileItem.getString("utf-8");
System.out.println("家具名: " + name);
}else {
upload(req,fileItem);
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().write("上传成功");
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}else {
System.out.println("不是文件表单...");
}
}
public void upload(HttpServletRequest request,FileItem fileItem) throws Exception {
String name = fileItem.getName();
System.out.println("上传的文件名=" + name);
String filePath = "/upload/";
String realPath = request.getServletContext().getRealPath(filePath);
File fileDirectory = new File(realPath + WebUtils.getYearMonthDay());
if (!fileDirectory.exists()) {
fileDirectory.mkdirs();
}
name = UUID.randomUUID().toString()+"_" + System.currentTimeMillis() +"_"+ name;
fileItem.write(new File(fileDirectory +"/" + name));
}
}
工具类WebUtils
public class WebUtils {
public static String getYearMonthDay() {
LocalDateTime localDateTime = LocalDateTime.now();
int year = localDateTime.getYear();
int monthValue = localDateTime.getMonthValue();
int dayOfMonth = localDateTime.getDayOfMonth();
String yearMonthDay = year + "/" + monthValue + "/" + dayOfMonth + "/";
return yearMonthDay;
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>FileUploadServlet</servlet-name>
<servlet-class>com.sparrow.servlet.FileUploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadServlet</servlet-name>
<url-pattern>/fileUploadServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>FileDownLoadServlet</servlet-name>
<servlet-class>com.sparrow.servlet.FileDownLoadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileDownLoadServlet</servlet-name>
<url-pattern>/fileDownLoadServlet</url-pattern>
</servlet-mapping>
</web-
项目目录结构
所需要的Jar包
项目演示