package com.yhzz.servlet;
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;
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;
public class UploadServlet 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 {
//获取FileItem工厂类
FileItemFactory factory = new DiskFileItemFactory();
//通过FileItemFactory创建ServletFFileUpload对象
ServletFileUpload upload = new ServletFileUpload(factory);
//解析form表单提交的数据,获得List<FileItem>集合
try {
List<FileItem> fileItems = upload.parseRequest(req);
if (null != fileItems && fileItems.size() != 0){
for (FileItem fileItem : fileItems) {
if (fileItem.isFormField()){
String fieldName = fileItem.getFieldName();
if (fieldName.equals("username")){
System.out.println(fileItem.getString("utf-8")+"上传了文件");
}
}else{//是文件
String fileName = fileItem.getName();
String fileAbsPath = req.getSession().getServletContext().getRealPath("upload");
File file = new File(fileAbsPath,fileName);
//将上传文件写入到file
fileItem.write(file);
System.out.println("文件上传成功,文件名为:"+file.getName());
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
jsp页面展示
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2021/9/24
Time: 17:36
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
<p>姓名:<input type="text" name="username"></p>
<p>选择文件:<input type="file" name="nfile"></p>
<p><input type="submit" value="提交"></p>
</form>
</body>
</html>