/**
*
*/
package cn.demo.fupload;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* @author Administrator
* @version 2009-3-8 文件的上传下载commons-fileupload
*/
public class FileUploadServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1068590804829697704L;
private ServletContext sc;//获取设备上下文对象
private String savePath;//保存的路径
/**
* @param args
* @throws UnsupportedEncodingException
*/
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws UnsupportedEncodingException,ServletException,IOException{
doPost(request,response);
//将get请求和post请求统一发送给doPost处理
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws UnsupportedEncodingException,ServletException,IOException{
//设置编码格式
request.setCharacterEncoding("GBK");
//使用FileItemFactory创建新的文件项目
DiskFileItemFactory factory = new DiskFileItemFactory();
//FileUpload用来解析request文件上传请求
ServletFileUpload upload = new ServletFileUpload(factory);
try {
//获取请求的信息存入列表list中
List tempList = upload.parseRequest(request);
Iterator it = tempList.iterator();
while(it.hasNext()){
FileItem item = (FileItem)it.next();
//判断items中的文本信息
if(item.isFormField()){
System.out.println("表单参数的名称"+item.getFieldName()
+"表单的参数值"+item.getString("GBK"));
}else{
if(item.getName()!=null&&!item.getName().equals("")){
System.out.println("所上传的文件名称:"+item.getName());
System.out.println("所上传的文件大小:"+item.getSize());
System.out.println("所上传的文件类别:"+item.getContentType());
//用于获取file中的文件名(不包含路径)
File tempFile = new File(item.getName());
//建立文件内容
File file = new File(sc.getRealPath("/")+savePath,tempFile.getName());
//将文件上传至服务器
item.write(file);
request.setAttribute("upload.message", "上传文件成功!"+item.getName()+item.getSize()+item.getContentType());
}else{
request.setAttribute("upload.message", "没有选择文件!");
}//end else
}//end else
}//end while
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("上传文件失败!");
request.setAttribute("upload.message"," 上传文件失败!");
}
request.getRequestDispatcher("../uploadResult.jsp").forward(request, response);
}
public void init(ServletConfig config){
//获取配置文件保存的变量值
savePath = config.getInitParameter("savePath");
//获取Servlet上下文对象
sc = config.getServletContext();
}
}