【环境】win10、eclipse Photon 4.8.0 (2018.06)、Tomcat9.0、JDK1.8
【项目】Dynamic Web Project (Dynamic Web module version:3.0)
【jar包】commons-fileupload-1.2.1.jar、commons-io-1.4.jar
【前台】index.html
<form action="/WEB32_fileupload/fileUpload" method="post" enctype="multipart/form-data">
<input type="file" name="filename"> <br>
<input type="submit" value="上传">
</form>
【后端】FileUploadServlet.java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
try {
// 接收上传的文件
// 1、创建磁盘文件项工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
// 2、创建文件上传的核心类
ServletFileUpload upload = new ServletFileUpload(factory);
// 3、解析request,获得文件项集合
List<FileItem> parseRequest = upload.parseRequest(request);
// 4、遍历文件项集合
for (FileItem item : parseRequest) {
// 5、判断普通表单项和文件上传项
boolean formField = item.isFormField(); // 是否是一个普通表单项
if (formField) {
// 普通表单项
String fieldName = item.getFieldName();
String fielValue = item.getString();
System.out.println(fieldName + ":" + fielValue);
} else {
// 文件上传项
// 获得名字
String fileName = item.getName();
// 获得上传文件的内容
InputStream in = item.getInputStream();
// 将in中的数据拷贝到服务器上
String path = this.getServletContext().getRealPath("upload"); // WebContent下upload文件夹
OutputStream out = new FileOutputStream(path + "/" + fileName);
IOUtils.copy(in, out);
// 关闭资源
out.close();
in.close();
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
【项目目录结构】
【说明】
1、此项目采用注解式开发,FileUploadServlet中添加注解@WebServlet("/fileUpload")
2、form表单上传文件前提:
(1)post提交方式
(2)文件上传项必须有name属性
(3)表单的enctype="multipart/form-data"
3、依赖jar包资源commons-fileupload-1.2.1.jar和commons-io-1.4.jar自行百度,此处暂不提供。