使用common-fileUpload制作文件上传

所需包:commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar

 

工作需要,以前都是直接用struts框架中的上传组件,很好用,但是现在没有用框架了,只用jsp上传还不会了,现在学习了一下,做好备份,希望下次能用的上。

 

前台页面不用多说  主要是表单中设置 enctype="multipart/form-data" 很重要。

 

处理上传jsp文件

     
   判断表单是否是Multipart类型的。这里可以直接对request进行判断
    if (ServletFileUpload.isMultipartContent(request)) {
    // 创建文件处理工厂,它用于生成 FileItem 对象。
    DiskFileItemFactory factory = new DiskFileItemFactory();
     设置文件的缓存路径
       String tempdir =this.getServletContext().getRealPath("/upload/temp");   
     java.io.File d = new java.io.File(savedir);
        if(!d.exists()){
         d.mkdirs();
        }
    
    factory.setSizeThreshold(1024*1024); // 设置最多只允许在内存中存储的数据,单位:字节
    factory.setRepository(d); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录(默认可以不用设置)

    // Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload(factory);
    // 设置允许用户上传文件大小,单位:字节
    upload.setSizeMax(yourMaxRequestSize);
    //上传文件,并解析出所有的表单字段,包括普通字段和文件字段
    List  items = upload.parseRequest(request);
         //下面对每个字段进行处理,分普通字段和文件字段
   Iterator it = items.iterator();
   while(it.hasNext()){
    FileItem fileItem = (FileItem) it.next();
    //如果是普通字段
    if(fileItem.isFormField()){  //是普通的字段
     System.out.println(fileItem.getFieldName() + "   " + fileItem.getName() + "   " + new String(fileItem.getString().getBytes("iso8859-1"), "gbk"));
    fileItem.getFieldName();//得到字段name属性的值
    fileItem.getName();//得到file字段的文件名全路径名,如果不是file字段,为null
    fileItem.getString();//得到该字段的值,默认的编码格式
    fileItem.getString("UTF-8");//指定编码格式
    }else{//文件字段
         System.out.println(fileItem.getFieldName() + "   " +
        fileItem.getName() + "   " +//得到file字段的文件名全路径名
        fileItem.isInMemory() + "    " +//用来判断FileItem类对象封装的主体内容是存储在内存中,还是存储在临时文件中,如果存储在内存中则返回true,否则返回false
        fileItem.getContentType() + "   " +//文件类型
        fileItem.getSize());          //文件大小

       //什么东西都有了 ,想怎么处理都可以了
     //保存文件,其实就是把缓存里的数据写到目标路径下
     if(fileItem.getName()!=null && fileItem.getSize()!=0){
      File fullFile = new File(fileItem.getName());
      File newFile = new File("c:/temp/" + fullFile.getName());
      try {
       fileItem.write(newFile);
      } catch (Exception e) {
       e.printStackTrace();
      }
     }else{
      System.out.println("文件没有选择 或 文件内容为空");
     }

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、5资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值