分享

commonds-fileupload-kirin -JavaEye技术社区

 LUPA 2007-08-24
upload.java 
  1. import javax.servlet.*;   
  2. import javax.servlet.http.*;   
  3. import java.io.*;   
  4. import java.util.*;   
  5. import java.util.regex.*;   
  6. import org.apache.commons.fileupload.*;   
  7. import org.apache.commons.io.FilenameUtils;   
  8. import org.apache.commons.fileupload.servlet.*;   
  9. import org.apache.commons.fileupload.disk.*;   
  10. import com.axtrip.util.*;   
  11. public class Upload extends HttpServlet {   
  12.     private String uploadPath = "C:\\upload\\"; // 用于存放上传文件的目录  
  13.     private String tempPath = "C:\\upload\\temp\\"; // 用于存放临时文件的目录  
  14.     /**  
  15.      * Constructor of the object.  
  16.      */  
  17.     public Upload() {  
  18.         super();  
  19.     }  
  20.     /**  
  21.      * Destruction of the servlet.   
  22.      */  
  23.     public void destroy() {  
  24.         super.destroy();  
  25.  
  26.     }  
  27.  
  28.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  29.     throws ServletException, IOException {  
  30.         doPost(request,response);  
  31.     }  
  32.  
  33.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  34.         response.setContentType("text/html; charset=GB2312");  
  35.         PrintWriter out=response.getWriter();  
  36.         try {  
  37.             System.out.println("start");  
  38.             DiskFileItemFactory factory = new DiskFileItemFactory();  
  39.             ServletFileUpload upload = new ServletFileUpload(factory);  
  40.             upload.setSizeMax(4 * 1024 * 1024);
  41.             //允许上传的文件大小,4M  
  42.             factory.setSizeThreshold(1 * 1024 * 1024);
  43.             //设置最多只允许在内存中存储的数据,单位:字节  
  44.             factory.setRepository(new File(tempPath));
  45.             //文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
  46.             String[] errorType = { "exe", "com", "cgi", "asp" };
  47.             //过滤掉的文件类型            
  48.             List uploadlist=upload.parseRequest(request);
  49.             //开始读取上传信息   
  50.             Iterator iter=uploadlist.iterator();  
  51.             while(iter.hasNext()){  
  52.                 FileItem  item=(FileItem)iter.next();  
  53.                 if(!item.isFormField()){//忽略其他不是文件域的所有表单信息  
  54.                     String passandfilename = item.getName();
  55.                     //取到客户端完整 路径+文件名 c:/111.jpg                   
  56.                     String filename=FilenameUtils.getName(passandfilename);
  57.                     //取到 文件名 111.jpg  
  58.                     String filetype = getFiletype(filename);//取到文件类型 jpg  
  59.                       
  60.                     boolean flag = false;//判断是否有非法的文件类型                   
  61.                     for(int i =0; i<=errorType.length-1; i++){                        
  62.                         if (filetype.equals(errorType[i])){
  63.                             flag = true;  
  64.                         }  
  65.                     }  
  66.                     if(flag)break;//如果有非法文件,退出  
  67.                       
  68.                     if(!filename.equals("")){                                 
  69.                         filename = getNewFileNameByTime(filename);//文件重命名  
  70.                         String savepath=uploadPath+filename;  
  71.                         out.println("savepath is "+savepath);
  72.                         File saveFilepath=new File(savepath);  
  73.                         item.write(saveFilepath);  
  74.                     }else{  
  75.                         out.print("没东西");  
  76.                     }  
  77.                 }  
  78.             }  
  79.         } catch (FileUploadBase.SizeLimitExceededException e) {  
  80.             out.println("文件太大了吧");  
  81.             e.printStackTrace();  
  82.         } catch (Exception e) {  
  83.             e.printStackTrace();  
  84.         }  
  85.  
  86.     }  
  87.  
  88.     public void init() throws ServletException {  
  89.           
  90.     }   
  91.       
  92.     //取文件名后缀  
  93.     public static String getFiletype(String fileName) {   
  94.         String type = "";  
  95.         if (fileName == null || fileName.equals(""))  
  96.             return type;  
  97.         int position = fileName.lastIndexOf(".");  
  98.         if (position != -1) {  
  99.             type = fileName.substring(position + 1 , fileName.length());  
  100.         }  
  101.         return type;  
  102.     }  
  103.     //将文件重命名  
  104.     synchronized public String getNewFileNameByTime(String fileName){  
  105.         Date dt = new Date();  
  106.         String fType = getFiletype(fileName);  
  107.           
  108.         String newFileName = new Date().getTime()+ Math.random() + "." + fType;   
  109.         return newFileName ;   
  110.     }   
  111.        
  112. }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多