需要引用的jar

commons-fileupload-1.3.1.jar

commons-io-2.2.jar

index.jsp

  

    <body>
<center>
<h3>文件上传</h3>
<font color="red"><%=request.getAttribute("msg")==null?"":request.getAttribute("msg") %> </font>
<form enctype="multipart/form-data" method="post" action="servlet/FileUploadServlet">
文件描述:<input type="text" name="text" /><br/>
选择文件:<input type="file" name="file1" /><br/>
选择文件:<input type="file" name="file2" /><br/>
选择文件:<input type="file" name="file3" /><br/>
选择文件:<input type="file" name="file4" /><br/>
选择文件:<input type="file" name="file5" /><br/>
<input type="submit" value="上传" />
</form>
</center>
</body>

FileUploadServlet.jsp

    package com.accp.fileupload.servlet;  

    import java.io.File;
import java.io.IOException;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload; public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = 2827297299439162553L; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//使用同一种处理方法
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8"); //保存路径
String savePath = getServletContext().getRealPath("/upload");
File saveDir = new File(savePath);
// 如果目录不存在,就创建目录
if(!saveDir.exists()){
saveDir.mkdir();
} // 创建文件上传核心类
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(factory);
//设置编码
sfu.setHeaderEncoding("UTF-8");
// 设置上传的单个文件的最大字节数为2M
sfu.setFileSizeMax(1024*1024*2);
//设置整个表单的最大字节数为10M
sfu.setSizeMax(1024*1024*10); try{
// 处理表单请求
List<FileItem> itemList = sfu.parseRequest(request);
for (FileItem fileItem : itemList) {
// 对应表单中的控件的name
String fieldName = fileItem.getFieldName();
System.out.println("控件名称:" + fieldName);
// 如果是普通表单控件
if(fileItem.isFormField()){
String value = fileItem.getString();
//重新编码,解决乱码
value = new String(value.getBytes("ISO-8859-1"),"UTF-8");
System.out.println("普通内容:" + fieldName + "=" + value);
// 上传文件
}else{
// 获得文件大小
Long size = fileItem.getSize();
// 获得文件名
String fileName = fileItem.getName();
System.out.println("文件名:"+fileName+"\t大小:" + size + "byte"); //设置不允许上传的文件格式
if(fileName.endsWith(".exe")){
request.setAttribute("msg", "不允许上传的类型!");
}else{
//将文件保存到指定的路径
File file = new File(savePath,fileName);
fileItem.write(file);
request.setAttribute("msg", "上传成功!");
}
}
}
}catch(FileSizeLimitExceededException e){
request.setAttribute("msg", "文件太大");
}catch(FileUploadException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
//上传完毕后 转发到首页
request.getRequestDispatcher("/index.jsp").forward(request, response);
} }

注意要采用action 方式提交表单,不要使用 ajax的方式提交表单,否则会有异常信息。

org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:885)

最新文章

  1. 获取iOS设备型号iphone ipad
  2. Perl语言
  3. hdu 5976 Detachment
  4. [Redis]Redis 概述及基本使用规范.
  5. AngularJS笔记---数据绑定
  6. Android -- 闹钟服务的使用(启动与停止)
  7. 【Selenium2+Python】常用操作
  8. csdn 泄露用户密码害人不浅啊。
  9. [OrangePi] Building the system
  10. Windows下用Eclipse搭建C/C++开发环境
  11. Qt读写二进制文件
  12. 支付宝开发(一)-认识php openssl RSA 非对称加密实现
  13. strncpy 用法
  14. 源码安装zabbix_server服务端
  15. 对SVN的落地与实践总结
  16. 程序设计-理解java继承-遁地龙卷风
  17. pandas 中的模糊匹配
  18. [转]Docker版本变化和新版安装
  19. 【.NET】asp.net Redirect 图片路径
  20. 利用springMVC包装类上传多个文件

热门文章

  1. http面试准备
  2. 下载带有kali linux系统的VMware如何打开虚拟机?
  3. 随机数据生成与对拍【c++版,良心讲解】
  4. Linux基本操作
  5. springmvc上传文件错误The current request is not a multipart request
  6. 01-Redhat/Centos7网卡命名介绍及修改方式
  7. golang项目练习
  8. sql中检查时间是否重叠
  9. String.Join Method
  10. 【10】Cookie和Session