1.准备两个JAR包: commons-fileupload-1.3.3.jar 和 commons-io-2.5.jar,(直接百度上就能找到)
2.开始写代码
a. 上传文件的表单,即JSP页面
* 要同时上传多个文件的话,就多写几个
* 支持一个表单同时上传文件和文字内容
b. 在src目录下新建一个Servlet:
右键src --> New --> Servlet
输入Servlet名字,勾选doGet()和doPost()方法 --> Finish【doGet()和doPost()方法也可以只勾选一个,一般勾选doPost(),具体情况看你JSP页面表单的提交方法是GET还是POST】
c. 配置web.xml文件
d. 编写Servlet
如果你添加了doGet()和doPost()两个方法,则在其中一个方法中调用另一个方法,借着在被调用的方法中编写代码
public class FileUploadServlet extends HttpServlet {
private File uploadPath; //设置文件上传路径
private File tempPath; //当文件过大时,需要设置一个临时保存路径
private static final int DEFUALT_SIZE_THRESHOLD=4096; //当超过该大小时,文件存储为临时文件
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置编码为UTF-8
request.setCharacterEncoding("UTF-8");
response.setContentType("utf-8");
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(DEFUALT_SIZE_THRESHOLD); //超过该大小,则存储为临时文件
factory.setRepository(tempPath);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(1000000*20); //设置上传文件的最大值
try {
List
String itemNo = "";
//为了防止重复文件名以及文件名称,基于文件上传时间来生成随机文件名以及文件名称
String filePackName = getRadomFileName();
File file = new File(uploadPath+"\\"+filePackName);
file.mkdirs(); //在upload文件夹或temp文件夹下新建一个文件夹用于存放新上传的文件
for(Iterator iter = fileItems.iterator(); iter.hasNext();){
FileItem item = (FileItem) iter.next();
//普通表单输入域
if(item.isFormField()){
itemNo = item.getString();
System.out.println("普通表单内容:"+itemNo);
}
//上传文件表单输入域
if(!item.isFormField()){
String fileName = item.getName(); //获取文件名称
long size = item.getSize(); //获取文件大小
System.out.println("文件名称:"+fileName+";文件大小:"+size);
if((fileName == null || fileName.equals("")) && size == 0){//判断文件名是否为空
continue;
}
//截取地址字符串
System.out.println("提交地址:"+fileName);
//fileName = fileName.substring(fileName.lastIndexOf("\\")+1,fileName.length());
item.write(new File(uploadPath+"\\"+filePackName,fileName));//将上传的文件写入对应的文件夹
System.out.println("文件上传成功");
System.out.println("文件成功保存到"+uploadPath+"\\"+filePackName+"目录下");
以上就是使用commons-fileupload实现文件上传的内容。【供个人学习使用】