/**
*
*/
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();
}
}