2.common-fileupload組件挺好用的,也能夠上傳大文件,我試過,300M以上的文件上傳本地傳非常快,異地測試也能夠上傳成功.首先要下載org.apache.commons.fileupload包和org.apache.commons.io包下面是我的servletpackage com.kinstar.issuing.action; import java.io.IOException;import javax.servlet.Servlet;import javax.servlet.ServletException;import java.io.*;import java.sql.SQLException;import java.util.*;import java.text.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.regex.*;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.DiskFileUpload;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import com.kinstar.issuing.objects.t_user;import com.kinstar.issuing.operation.UserOperation;import com.kinstar.issuing.program.programService;import com.kinstar.issuing.session.SessionGloble;import com.kinstar.issuing.util.StringUtil;/** * @version 1.0 * @author gyf */public class uploadProgramAction extends HttpServlet{ private static final String CONTENT_TYPE = "text/html; charset=GB2312"; /** * 處理GET請求 */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } /** * 響應POST請求 */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 變量定義 response.setContentType(CONTENT_TYPE); HttpSession modifysession=request.getSession(); SessionGloble logonUser; logonUser=(SessionGloble)modifysession.getAttribute("UserInfo"); if(logonUser==null){ response.sendRedirect("mainindex.jsp"); } t_user userinfo=new t_user(); UserOperation user=null; try { user = new UserOperation(); } catch (Exception e1) { // TODO 自動生成 catch 塊 e1.printStackTrace(); } try { userinfo=user.getUser(logonUser.getUserId()); } catch (Exception e2) { // TODO 自動生成 catch 塊 e2.printStackTrace(); } //System.out.println("figure="+userinfo.getUserFigure()); PrintWriter out=response.getWriter(); DateFormat updf = new SimpleDateFormat("yyyyMMddHHmm"); String updateTime = updf.format(new Date()); int isNeed = 0; String IsCheck="0"; //省農行用戶上傳的節目必需顯示,且審批已經合格 if(userinfo.getUserFigure().equals("1")){ isNeed = 1; IsCheck = "1"; } else{ isNeed = 0; IsCheck = "0"; } int type=0; String avaTime=""; String screen=""; int fileTime=0; int fileTimeReal=0; int circle=0; String picSwitch=""; String deleState="1"; String backPic=""; String fieldName=""; String finalName=""; String fileNameReal=""; long size=0; String name=""; try { DiskFileUpload fu = new DiskFileUpload(); // 設置允許用戶上傳文件大小,單位:字節,這裏設爲2m fu.setSizeMax(5*1024*1024*1024); // 設置最多隻允許在內存中存儲的數據,單位:字節 fu.setSizeThreshold(10*1024*1024); // 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬盤的目錄 fu.setRepositoryPath("C://WINDOWS//Temp//"); //開始讀取上傳信息 List fileItems = fu.parseRequest(request); //依次處理每個上傳的文件 Iterator iter = fileItems.iterator(); //正則匹配,過濾路徑取文件名 String regExp=".+////(.+)$"; //過濾掉的文件類型 String[] errorType={".exe",".com",".cgi",".asp"}; Pattern p = Pattern.compile(regExp); StringUtil su = new StringUtil(); while (iter.hasNext()) { FileItem item = (FileItem)iter.next(); if(item.isFormField()) { // 獲得表單域的名字 fieldName = item.getFieldName(); // 如果表單域的名字是name… if(fieldName.equals("type")) type = Integer.parseInt(item.getString()); } if (!item.isFormField()) { name = item.getName(); size = item.getSize(); if((name==null||name.equals("")) && size==0) continue; Matcher m = p.matcher(name); boolean result = m.find(); if (result){ for (int temp=0;temp