JSP实现文件上传:
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<base href="http://localhost:8080/Test/">
<title>Title</title>
</head>
<body>
<form action="one" method="post" enctype="multipart/form-data">
用户名:<input type="text" name="username"><br/>
文件:<input type="file" name="file"><br/>
<input type="submit" value="提交">
</form>
</body>
</html>
OneServlet.java
package com.example.Test;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.File;
import java.io.IOException;
import java.util.List;
@WebServlet(name = "OneServlet", value = "/OneServlet")
public class OneServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//判断上传数据是否为多段数据(是,才为文件上传)
if (ServletFileUpload.isMultipartContent(request)){
//创建FileItemFactory工厂实现类
FileItemFactory fileItemFactory = new DiskFileItemFactory();
//创建解析上传数据的工具类
ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
try {
//解析数据,得到表单项
List<FileItem> list = servletFileUpload.parseRequest(request);
for (FileItem fileItem : list) {
//判断是否普通类型,文件
if (fileItem.isFormField()) {
System.out.println("表单name属性值"+fileItem.getFieldName());
//防止乱码
System.out.println("表单value值"+fileItem.getString("utf-8"));
}else{
//上传的文件
System.out.println("表单name属性值"+fileItem.getFieldName());
System.out.println("文件名"+fileItem.getName());
fileItem.write(new File("f:\\"+fileItem.getName()));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}