JSP使用Common FileUpload组件实现文件上传及限制上传类型实例代码

1、将commons-fileupload-1.3.3.jar复制到Web应用的lib文件夹下,在WebRoot目录下创建limit.jsp页面,在该页面中添加一个文件域的表单,设置类型为    multipart/form-data。代码如下:

<body>
  <h2>上传图书课件</h2>
  <form action="LimitFile" name="one" enctype="multipart/form-data" method="post">
    选择一个rar文件:
    <input type="file" name="fileupload" value="upload" />
    <input type="submit" value="上传"> <input type="reset" value="取消">
  </form>
 </body> 

  上述代码指定提交后将请求提交给LimitFile处理,LimitFile(Servlet)用来处理上传文件及判断文件类型是否匹配,显示上传结果。

2、创建名为LimitFile的Servlet,并在doPost()方法中编写实现代码,如下所示:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    String uploadpath = "";
    DiskFileItemFactory factory = new DiskFileItemFactory();
    //设置是否使用临时文件保存解析出来的数据的那个临界值,该方法传入参数的单位是字节。
    factory.setSizeThreshold(30 * 1024);
    //用于设置setSizeThreshold()方法中提到的临时文件的存放目录,这里要求使用绝对路径。
    factory.setRepository(factory.getRepository());
    ServletFileUpload upload = new ServletFileUpload(factory);
    List list = null;
    try{
      list = upload.parseRequest(request);
      String[] limit = new String[]{".jpg", ".gif", ".png", ".bmp"};
      //定义限制的文件类型
      SuffixFileFilter filter = new SuffixFileFilter(limit);
      //获取SuffixFileFilter实例
      Iterator iterator = list.iterator();
      while(iterator.hasNext()){
        FileItem item =(FileItem)iterator.next();
        if(!item.isFormField()){
          String filePath = item.getName();
          if(filePath != null){
            File filename= new File(filePath);
            File uploadFile = new File(request.getSession().getServletContext().getRealPath("/") + "upload");
            uploadpath = uploadFile.getAbsolutePath()+File.pathSeparator + uploadpath;
            //因为路径后面多了个";"号,所以要去掉
            uploadpath = uploadpath.substring(0, uploadpath.length()-1);
            File saveFile = new File(uploadpath,filename.getName());
            boolean flag = filter.accept(saveFile);
            if(flag){
              out.print("禁止上传传图片文件");
              break;
            }else{
              try {
                item.write(saveFile);
                out.print("文件上传成功");
              } catch (Exception e) {
                out.print("文件上传失败了");
                e.printStackTrace();
              }
            }
          }
        }
      }
    }catch(FileUploadException e){
      e.printStackTrace();
    }
  }

上述代码在字节串数组limit中定义了不允许上传的文件类型,然后将该数组传递给SuffixFileFilter类的构造函数。在通过该类的accept()方法验证当前上传的文件是否符合条件。最后将文件保存到项目的upload目录下。

总结

以上所述是小编给大家介绍的JSP使用Common FileUpload组件实现文件上传及限制上传类型实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

(0)

相关推荐

  • jsp-解决文件上传后重启Tomcat时文件自动删除问题

    吼吼,我遇到的问题是这样的...... 我写了一个图片上传的方法,上传时,判断没有这个目录就自动建立一个.然后开始上传图片,能成功,能在服务器找到文件夹和相应的文件.但是,重启项目,或者清理缓存之后,图片和文件夹就会自动被删除,不见了. 先说解决办法吧,后面再分析: 1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容, 2.修改/tomcat/conf/web.xml文件: <servlet> <servlet-name>default</servlet-

  • servlet+JSP+mysql实现文件上传的方法

    本文实例讲述了servlet+JSP+mysql实现文件上传的方法.分享给大家供大家参考,具体如下: 一.文件上传的基本操作: 1. 表单属性enctype的设置 multipart/form-data和application/x-www-form-urlencoded的区别 FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型,默认的缺省值是"application/x-www-form-urlencoded". 然而,在向服务器发送大量的文本.包含非ASCI

  • jsp实现文件上传下载的程序示例

    一.文件上传上传文件是Web开发中经常要用到的功能:例如在基于B/S的人事信息管理系统中上传照片,在新闻发布系统中上传图片等等.....要实现文件上传功能,就需要综合利用java中的文件输入和输出相关的类.在TCP/IP中,最早出现的文件上传机制是FTP.它是将文件由客服端发送到服务器的标准机制,能够考虑到跨平台的文本和二进制格式文件.但是在jsp编程中不能使用FTP方法来上传文件,这是由jsp 运行机制所决定的.下面是上传文件的jsp页面: 复制代码 代码如下: <form action=&quo

  • jsp中点击图片弹出文件上传界面及实现预览实例详解

    jsp中点击图片弹出文件上传界面及实现预览实例详解 花了两天时间琢磨一下图片预览的功能 任务需求如下: 1:jsp页面中有一个图片(pic_1) 2:点击图片弹出类似于资源管理器的界面 3:选择完某一个图片之后在pic_1处预览 我在IE8上试验下面这段代码,可以实现上述功能,没有在别的浏览器中测试,如果各位朋友知道多种浏览器的支持方法,请赐教,共同学习,谢谢. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&qu

  • jsp中点击图片弹出文件上传界面及预览功能的实现

    花了两天时间琢磨一下图片预览的功能 任务需求如下: 1:jsp页面中有一个图片(pic_1) 2:点击图片弹出类似于资源管理器的界面 3:选择完某一个图片之后在pic_1处预览 我在IE8上试验下面这段代码,可以实现上述功能,没有在别的浏览器中测试,如果各位朋友知道多种浏览器的支持方法,请赐教,共同学习,谢谢. 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http:

  • 利用jsp+Extjs实现动态显示文件上传进度

    需求来源是这样的:上传一个很大的excel文件到server, server会解析这个excel, 然后一条一条的插入到数据库,整个过程要耗费很长时间,因此当用户点击上传之后,需要显示一个进度条,并且能够根据后台的接收的数据量和处理的进度及时更新进度条. 分析:后台需要两个组件,uploadController.jsp用来接收并且处理数据,它会动态的把进度信息放到session,另一个组件processController.jsp用来更新进度条:当用户点"上传"之后,form被提交给u

  • JSP使用Common FileUpload组件实现文件上传及限制上传类型实例代码

    1.将commons-fileupload-1.3.3.jar复制到Web应用的lib文件夹下,在WebRoot目录下创建limit.jsp页面,在该页面中添加一个文件域的表单,设置类型为    multipart/form-data.代码如下: <body> <h2>上传图书课件</h2> <form action="LimitFile" name="one" enctype="multipart/form-da

  • Java中使用fileupload组件实现文件上传功能的实例代码

    使用fileupload组件的原因: Request对象提供了一个getInputStream()方法,通过这个方法可以读取到客户端提交过来的数据,但是由于用户可能会同时上传多个文件,在servlet中编程解析这些上传数据是一件非常麻烦的工作.为方便开发人员处理文件上传数据,Apache开源组织提供了一个用来处理表单文件上传的一个开源组件(Commons-fileupload),该组件性能优异,并且使用及其简单,可以让开发人员轻松实现web文件上传功能. 使用Commons-fileupload

  • 使用fileupload组件实现文件上传功能

    FileUpload文件上传 fileUpload是apache的commons组件提供的上传组件,它最主要的工作就是帮我们解析request.getInpustream(). 使用fileUpload组件首先需要引入两个jar包: commons-fileUpload.jar commons-io.jar fileUpload的核心类有DiskFileItemFactory.ServletFileUpload.FileItem. 使用fileUpload固定步骤: 创建工厂类:DiskFile

  • JS控制FileUpload的上传文件类型实例代码

    JS代码如下: function CheckFile(obj) { var array = new Array('gif', 'jpeg', 'png', 'jpg'); //可以上传的文件类型 if (obj.value == '') { alert("让选择要上传的图片!"); return false; } else { var fileContentType = obj.value.match(/^(.*)(\.)(.{1,8})$/)[3]; //这个文件类型正则很有用:)

  • Ajax上传图片及上传前先预览功能实例代码

    手头上有几个小项目用到了easyUI,一开始决定使用easyUI就注定了项目整体上前后端分离,基本上所有的请求都采用Ajax来完成.在文件上传的时候用到了Ajax上传文件,以及图片在上传之前的预览效果,解决了这两个小问题,和小伙伴们分享下. 上传之前的预览 方式一 先来说说图片上传之前的预览问题.这里主要采用了HTML5中的FileReader对象来实现,关于FileReader对象,如果小伙伴们不了解,可以查看这篇文章HTML5学习之FileReader接口.我们来看看实现方式: <!DOCT

  • AngularJs上传前预览图片的实例代码

    在工作中,使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,之前查了一些资料,结合实践,得出一种比较实用的方法,相对简化版,在这里记录一下,如有不同看法,欢迎一起沟通,一起成长. demo.html: <!doctype html> <html ng-app="myTestCtrl"> <head> <meta charset="UTF-8"> <title>demo&l

  • python 文件的基本操作 菜中菜功能的实例代码

    python  文件的基本操作 菜中菜 文件操作 ​ open():打开 ​ file:文件的位置(路径) ​ mode:操作文件模式 ​ encoding:文件编码方式 ​ f :文件句柄 f = open("1.txt",mode = 'r',encoding = 'utf-8') print(f.read()) f.close 1.文件操作模式: ​ r,w,a(重要) ​ rb,wb,ab(次要) ​ r+,w+,a+ 1.1 r/w/a 1. r操作: f = open('1

  • 微信小程序swiper组件实现抖音翻页切换视频功能的实例代码

    微信小程序用swiper组件实现仿抖音短视频上下划动整页切换视频功能demo 利用swiper组件可简单快速编写仿抖音短视频的功能  自动播放当前页视频  翻页停止播放当前页视频 并自动播放下页视频 有其他需求也可用 cover-view 添加 收藏 点赞 评论等功能 效果图: video官方介绍: https://developers.weixin.qq.com/miniprogram/dev/component/video.html swiper官方介绍: https://developer

  • Spring Boot实现图片上传/加水印一把梭操作实例代码

    概述 很多网站的图片为了版权考虑都加有水印,尤其是那些图片类网站.自己正好最近和图片打交道比较多,因此就探索了一番基于 Spring Boot这把利器来实现从 图片上传 → 图片加水印 的一把梭操作! 本文内容脑图如下: 本文内容脑图 搭建 Spring Boot基础工程 过程不再赘述了,这里给出 pom中的关键依赖: <dependencies> <dependency> <groupId>org.springframework.boot</groupId>

  • vue组件表单数据回显验证及提交的实例代码

    最近项目需要到vue开发单页面,所以就研究一下表单数据的回显,验证及提交如何用vue组件的方式实现. 代码如下: <template> <div class="index"> <!--header-bar></header-bar--> <div style="margin:20px;"> <div class="item"> <p>住户名称:</p>

随机推荐