热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用FileUpload做得文件上传

Html代码






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


    >




      



/UploadFileServlet"
 method="post" target="hidden_frame">



 

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




  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(



    ""



    );   




  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(



    ""



    );   




  78.                     out.close();   




  79.                 }   




  80.             }   




  81.         } 




    catch




     (Exception e) {   




  82.             e.printStackTrace();   




  83.         }   




  84.     }   




  85.        




  86. }  



import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
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;
import org.apache.log4j.Logger;
import com.siyue.ciap.beans.dic.EnvBean;
import com.siyue.ciap.dao.cms.UUIDGenerator;
import com.siyue.ciap.dao.phone.ReadFileUtil;
import com.siyue.ciap.dao.uitls.ObjectToJSON;
import com.siyue.ciap.service.uitl.SpringFacesUtil;
public class UploadFileServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
private static final Logger logger = Logger.getLogger(UploadFileServlet.class);

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("execute Upload File.................");
PrintWriter out = response.getWriter();
EnvBean envBean =(EnvBean)SpringFacesUtil
.getBean(this.getServletContext(), "EnvBean");
String uploadPath = envBean.getEnv().getProperty("upload_dest");//上传的路径
UUIDGenerator generator=new UUIDGenerator();
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);//设置缓冲
factory.setRepository(new File(uploadPath));//设置缓冲区目录
ServletFileUpload upload = new ServletFileUpload(factory);
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
upload.setSizeMax(1024000000);
List items = new ArrayList();
try {
items = upload.parseRequest(request);
Map rtnMap = new HashMap();
for(int i=0;i FileItem item = (FileItem) items.get(i);
String autoFileName = generator.generate().toString();
if("".equals(item.getName()))continue;
//获得文件名
String fileName = item.getName().substring(item.getName()
.lastIndexOf("\\")+1, item.getName().length());
//获得文件后缀名
String extName = fileName
.substring(fileName.lastIndexOf(".")+1, fileName.length());
//判断文件类型
if(!("xls".equalsIgnoreCase(extName) || "txt".equalsIgnoreCase(extName) ||
"csv".equalsIgnoreCase(extName))) {
out.print("");
out.close();
}else {
String fileOnlyName= uploadPath + autoFileName + "." + extName;
item.write(new File(fileOnlyName));
Map excelMap = null;
if("xls".equalsIgnoreCase(extName)) {
System.out.println("fileOnlyName------>"+fileOnlyName);
excelMap = ReadFileUtil.readSheetName(fileOnlyName);
}
rtnMap.put("file", fileOnlyName);
rtnMap.put("sheet", excelMap);
out.print("");
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

}

 





Java代码









  1. EnvBean envBean =(EnvBean)SpringFacesUtil   





  2.                .getBean(




    this




    .getServletContext(), 



    "EnvBean"



    );   




  3.         String uploadPath = envBean.getEnv().getProperty(



    "upload_dest"



    );



    //上传的路径



      



EnvBean envBean =(EnvBean)SpringFacesUtil
.getBean(this.getServletContext(), "EnvBean");
String uploadPath = envBean.getEnv().getProperty("upload_dest");//上传的路径

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





Java代码









  1. UUIDGenerator generator=




    new




     UUIDGenerator();   





  2. String autoFileName = generator.generate().toString();  



UUIDGenerator generator=new UUIDGenerator();
String autoFileName = generator.generate().toString();

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





Java代码









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





用FileUpload做得文件上传




推荐阅读
  • Keepalived 提供了多种强大且灵活的后端健康检查机制,包括 HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK 和 MISC_CHECK 等多种检测方法。这些健康检查功能确保了高可用性环境中的服务稳定性和可靠性。通过合理配置这些检查方式,可以有效监测后端服务器的状态,及时发现并处理故障,从而提高系统的整体性能和可用性。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • Java能否直接通过HTTP将字节流绕过HEAP写入SD卡? ... [详细]
  • 深入解析Android 4.4中的Fence机制及其应用
    在Android 4.4中,Fence机制是处理缓冲区交换和同步问题的关键技术。该机制广泛应用于生产者-消费者模式中,确保了不同组件之间高效、安全的数据传输。通过深入解析Fence机制的工作原理和应用场景,本文探讨了其在系统性能优化和资源管理中的重要作用。 ... [详细]
author-avatar
2d15064efa_556
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有