package com.zz.servlet;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.zz.util.ProgressStates;
/**
* @ClassName FileUploadServlet
* @author Administrator
*
*/
public class FileUploadServlet extends HttpServlet{
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
//判断是否是MutiPart类型上传
boolean isMutiPart=ServletFileUpload.isMultipartContent(request);
if(isMutiPart){
try {
//硬件文件工厂
DiskFileItemFactory diskFactory=new DiskFileItemFactory();
//文件上传的工具类
ServletFileUpload upload=new ServletFileUpload(diskFactory);
//增加监听器
upload.setProgressListener(new ProgressStates(request.getSession()));
//获取上传表单域
List<FileItem> fileItems=upload.parseRequest(request);
//获取上传表单域集合的迭代器
Iterator<FileItem> iter=fileItems.iterator();
//进行上传操作
while(iter.hasNext()){
//通过迭代获取表单域对象
FileItem fileItem=iter.next();
//普通表单域不处理
if(!fileItem.isFormField()){
//获取文件路径
String fileName=fileItem.getName();
//如果文件路径为空,则文件域没有选择文件上传
if(fileName!=null&&!fileName.equals("")){
File temFile=new File(fileName);
//创建服务器存储菜单目录
File fileOnServer=new File(this.getServletContext().getRealPath("/upload"),temFile.getName());
//将文件写入本地服务器
fileItem.write(fileOnServer);
System.out.println("文件"+fileOnServer.getName()+"上传成功!");
}
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}