热门标签 | 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做得文件上传




推荐阅读
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 字节流(InputStream和OutputStream),字节流读写文件,字节流的缓冲区,字节缓冲流
    字节流抽象类InputStream和OutputStream是字节流的顶级父类所有的字节输入流都继承自InputStream,所有的输出流都继承子OutputStreamInput ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 本文介绍了Java中的com.sun.codemodel.JBlock._continue()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文将详细介绍如何在Webpack项目中安装和使用ECharts,包括全量引入和按需引入的方法,并提供一个柱状图的示例。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
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社区 版权所有