表单:
<form action="A" method="post" enctype="multipart/form-data"> <!-- 是上传表单 -->
用户名:<input type="text" name="username"><br/>
文件:<input type="file" name="file1"><br/>
<input type="submit" value="提交">
</form>
Servlet:
public class Servlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.创建文件上传工厂类
DiskFileItemFactory fac = new DiskFileItemFactory();
//2.创建文件上传核心类
ServletFileUpload upload = new ServletFileUpload(fac);
//[设置单个文件最大上传大小:30M]
upload.setFileSizeMax(30*1024*1024);
//[设置总的文件最大上传大小:50M]
upload.setSizeMax(50*1024*1024);
//判断表单是否为文件上传表单
if(upload.isMultipartContent(request)){
//3.把请求数据转换为FileItem对象集合
try {
List<FileItem> items = upload.parseRequest(request);
//遍历每一个上传项
for(FileItem item:items){
//再判断是普通表单还是文件上传表单
if(item.isFormField()){
//普通表单
System.out.println("普通表单");
//获取元素名称
String fileName = item.getFieldName();
//获取文本框的值
String value = item.getString("UTF-8");
System.out.println(fileName+":"+value);
}else{
//处理文件上传
//获取上传文件的名字
String name = item.getName();
System.out.println(name);
//获取上传的目录路径,指定文件存储路径
String basePath = "G:/IntelliJ IDEA 2018.2.4/DynamicWeb/src/"; /*绝对路径,存放到服务器中的路径*/
//创建文件对象
File file = new File(basePath,name);
try {
item.write(file);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//写文件
item.delete();//删除临时文件
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
System.out.println("文件上传异常,不处理!");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
将表单提交到Servlet后,即可实现本地文件上传至指定的服务器目录。