用FileUpload做得文件上传

页面部分代码:

 

Html代码 
  1. <form id='myform' enctype="multipart/form-data" action="<%=webapp %>/UploadFileServlet"  
  2.  method="post" target="hidden_frame">  
  3. <input type="file" name="file" id="file" size="10" onchange="this.form.submit();" />  
  4. <iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>  
  5. </form>  

 

webapp是项目的路径名

String webapp=request.getContextPath();

 

后台代码:

 

Java代码 
  1. import java.io.File;  
  2. import java.io.IOException;  
  3. import java.io.PrintWriter;  
  4. import java.util.ArrayList;  
  5. import java.util.HashMap;  
  6. import java.util.List;  
  7. import java.util.Map;  
  8.   
  9. import javax.servlet.ServletException;  
  10. import javax.servlet.http.HttpServletRequest;  
  11. import javax.servlet.http.HttpServletResponse;  
  12.   
  13. import org.apache.commons.fileupload.FileItem;  
  14. import org.apache.commons.fileupload.disk.DiskFileItemFactory;  
  15. import org.apache.commons.fileupload.servlet.ServletFileUpload;  
  16. import org.apache.log4j.Logger;  
  17.   
  18. import com.siyue.ciap.beans.dic.EnvBean;  
  19. import com.siyue.ciap.dao.cms.UUIDGenerator;  
  20. import com.siyue.ciap.dao.phone.ReadFileUtil;  
  21. import com.siyue.ciap.dao.uitls.ObjectToJSON;  
  22. import com.siyue.ciap.service.uitl.SpringFacesUtil;  
  23.   
  24.   
  25. public class UploadFileServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {  
  26.   
  27.     private static final Logger logger = Logger.getLogger(UploadFileServlet.class);  
  28.       
  29.     protected void doGet(HttpServletRequest request, HttpServletResponse response)  
  30.             throws ServletException, IOException {  
  31.         this.doPost(request, response);  
  32.     }  
  33.   
  34.     protected void doPost(HttpServletRequest request, HttpServletResponse response)  
  35.             throws ServletException, IOException {  
  36.         System.out.println("execute Upload File.................");  
  37.         PrintWriter out = response.getWriter();  
  38.         EnvBean envBean =(EnvBean)SpringFacesUtil  
  39.                .getBean(this.getServletContext(), "EnvBean");  
  40.         String uploadPath = envBean.getEnv().getProperty("upload_dest");//上传的路径  
  41.         UUIDGenerator generator=new UUIDGenerator();  
  42.         DiskFileItemFactory factory = new DiskFileItemFactory();  
  43.         factory.setSizeThreshold(4096);//设置缓冲  
  44.         factory.setRepository(new File(uploadPath));//设置缓冲区目录  
  45.         ServletFileUpload upload = new ServletFileUpload(factory);  
  46.         boolean isMultipart = ServletFileUpload.isMultipartContent(request);  
  47.         upload.setSizeMax(1024000000);  
  48.         List items = new ArrayList();  
  49.         try {  
  50.             items = upload.parseRequest(request);  
  51.             Map rtnMap = new HashMap();  
  52.             for(int i=0;i<items.size();i++) {  
  53.                 FileItem item = (FileItem) items.get(i);  
  54.                 String autoFileName = generator.generate().toString();  
  55.                 if("".equals(item.getName()))continue;  
  56.                 //获得文件名  
  57.                 String fileName = item.getName().substring(item.getName()  
  58.                                .lastIndexOf("//")+1, item.getName().length());  
  59.                 //获得文件后缀名  
  60.                 String extName = fileName  
  61.                                .substring(fileName.lastIndexOf(".")+1, fileName.length());  
  62.                 //判断文件类型  
  63.                 if(!("xls".equalsIgnoreCase(extName) || "txt".equalsIgnoreCase(extName) ||   
  64.                         "csv".equalsIgnoreCase(extName))) {  
  65.                     out.print("<script>alert('您上传的文件不是excel|txt|csv类型!');</script>");  
  66.                     out.close();  
  67.                 }else {  
  68.                     String fileOnlyName = uploadPath + autoFileName + "." + extName;  
  69.                     item.write(new File(fileOnlyName));  
  70.                     Map excelMap = null;  
  71.                     if("xls".equalsIgnoreCase(extName)) {  
  72.                         System.out.println("fileOnlyName------>"+fileOnlyName);  
  73.                         excelMap = ReadFileUtil.readSheetName(fileOnlyName);  
  74.                     }  
  75.                     rtnMap.put("file", fileOnlyName);  
  76.                     rtnMap.put("sheet", excelMap);  
  77.                     out.print("<script>parent.callBack("+ObjectToJSON.MapToJsonStr(rtnMap)+")</script>");  
  78.                     out.close();  
  79.                 }  
  80.             }  
  81.         } catch (Exception e) {  
  82.             e.printStackTrace();  
  83.         }  
  84.     }  
  85.       
  86. }  
 
Java代码 
  1. EnvBean envBean =(EnvBean)SpringFacesUtil  
  2.                .getBean(this.getServletContext(), "EnvBean");  
  3.         String uploadPath = envBean.getEnv().getProperty("upload_dest");//上传的路径  

这句是调Spring找类,根据实际情况变化

Java代码 
  1. UUIDGenerator generator=new UUIDGenerator();  
  2. String autoFileName = generator.generate().toString();  

这句是给每个上传的文件加一个唯一标示,可用别的方法替代

Java代码 
  1. ObjectToJSON这个类是自己写一个Object和Json互转的类  

 

From:

http://www.javaeye.com/topic/240595

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值