利用apache组件实现文件上传

实现文件上传需要引入:

  • commons-fileupload-1.3.2.jar
  • commons-io-2.5.jar
  • commons-logging-1.2.jar
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>Insert title here</title>
 6 </head>
 7 <body>
 8     <form action="upload" method="post" enctype= "multipart/form-data">
 9         <input type="text" name="username"/><br/>
10         <input type="password" name="passwd" ><br/>
11         <input type="file" name="file">    <br/>
12         <input type="submit">
13     </form>
14 </body>
15 </html>
  • enctype= "multipart/form-data" 是实现文件上传必不可缺少的属性,但是加了此属性之后,就不能以 request.getParameter(arg0); 来获取表单值,只能通过getFieldName()获取表单名,getString()获取表单值。
if(items.isFormField()){
            if("des".equals(items.getFieldName())){
                        fileDesc1=new String(items.getString().getBytes("iso-8859-1"),"UTF-8");

                      }
  • 用户上传文件之后,通过表单的action属性发送到相应的servlet进行处理,我们在得到用户提交的数据之后,把用户数据分为两种: 1.普通文本数据 2.文件 对于文件数据我们要进行特别的处理才能正常使用。
  1. 我们通过创建磁盘文件工厂的对象DiskFileItemFactory来设置文件的临界值(超过这个临界值就需要通过临时文件来作为缓冲)和临时目录以及上传文件保存目录等等。
DiskFileItemFactory diff=new DiskFileItemFactory();
  diff.setSizeThreshold(10*1024*1024);
  diff.setRepository(new File(this.getServletContext().getRealPath("tmp"))); 

  2.    然后设置文件上传对象ServletFileUpload,并把文件工厂的对象添加进来。

ServletFileUpload sfu=new ServletFileUpload(diff);

  3.    接下来我们需要对文件进行解析。fileUpload.parseRequest()用于解析文件请求,并返回一个List<FileItem>类。FileItem类用来封装单个表单字段元素的数据,一个表单元素对应一个对象(表单元素是允许用户在表单中(比如:文本域,下拉列表,单选框,复选框等等)输入信息的元素)。

List<FileItem> item=null;
    try {
            item=fileUpload.parseRequest(request);
                for(FileItem items:item){
                if(items.isFormField()){  //为普通表单

                    if("des".equals(items.getFieldName())){  //表单
                        fileDesc1=new   String(items.getString().getBytes("iso-8859-1"),"UTF-8");
                    }
                }else{    //为表单中的文件
                    String uppath=this.getServletContext().getRealPath("upload");    //获得上传文件夹路径
                 FileOutputStream fos=new FileOutputStream(uppath+"/"+items.getName());    //文件输出流,流向文件而不是文件夹

                    fileDesc=items.getName();   

                    if(items.isInMemory()){     //小于10M,直接写到上传文件夹
                        fos.write(items.get());    //往流里写内容,流入文件
                    }else{    //大于10M,先上传到临时文件夹tmp中
                        IOUtils.copy(items.getInputStream(), fos);    //将输入流的内容复制到输出流,流入文件
                    }
                    fos.close();
                }
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
时间: 2024-08-24 10:25:20

利用apache组件实现文件上传的相关文章

(七)利用apache组件进行文件上传下载

一.文件上传 文件上传,即服务器端得到并处理用户上传的文件,这个文件存放在request里,也就是需要对request进行处理. 1.1 编写html文件 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action=&q

使用Commons FileUpLoad组件实现文件上传功能

Commons 是Apache开放的源码组织的一个java子项目,该项目主要涉及一些开发中常用的模块,如文件上传,命令行处理,数据库连接池等.FileUpLoad就是其中的一个用于处理HTTP文件上传的子项目.Commons FileUpLoad组建具有以下几个特点: 1.使用简单:Commons FileUpLoad组件可以方便的嵌入JSP文件中,在JSP文件中仅编写少量代码就可完成文件上传功能,十分方便. 2.能够全程控制上传的内容:使用Commons FileUpLoad组件提供的对象及操

使用commons-fileupload-1.2.1.jar等组件实现文件上传

使用的主要jar包:commons-io-1.3.2.jar包;commons-fileupload-1.2.1.jar包:commons-lang-2.3.jar,在使用组件实现文件上传时候要注意前后台的一致性,注意在后台定义File文件对象名要与jsp页面中的file标签name名字一致,前台form标签属性一定要设置为enctype="multipart/form-data",而且传输方式必须是post方式.不然后台不认为提交的是文件类型,而认为是普通表单的提交. 废话不多说看主

用Commons-FileUpload组件实现文件上传

一.用Commons-FileUpload组件实现文件上传 1.导入两个jar包 FileUpload下载地址: http://commons.apache.org/fileupload/ 下载:commons-fileupload-1.2.2-bin.zip    得到:commons-fileupload-1.2.2.jar http://commons.apache.org/io/ 下载:commons-io-1.4-bin.zip       得到:commons-io-1.4.jar

jquery组件WebUploader文件上传用法详解

这篇文章主要为大家详细介绍了jquery组件WebUploader文件上传用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件,下文来为各位演示一下关于jquery WebUploader文件上传组件的用法. 使用WebUploader还可以批量上传文件.支持缩略图等等众多参数选项可设置,以及多个事件方法可调用,你可以随心所欲的定制你要的上传组件. 接下来我以图片上

jsp实现文件上传(二)用cos组件实现文件上传

jsp表单 <%@ page language="java" pageEncoding="utf-8"%> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> <form action="cos.jsp" method="post" en

iview Upload组件多文件上传,以及vue文件下载

iview Upload组件多文件上传 系统经常遇到文件上传的问题,iview提供了Upload组建,能够很好的实现文件上传,当然一次上传多个文件也是允许的. 思路:创建一个数组 把需要上传的文件 push到这个数组里面 1.引用组件 2.手动上传,根据官方文档 设置:before-upload ="handleUpload"等于false (1).:before-upload 是 iview Upload 上传组件的一个属性 设置返回值为 false 可以阻止默认上传方式(自动上传模

用jspSmartUpload组件实现文件上传、下载

jspSmartUpload组件,可从http://download.csdn.net/user/dearchuansir下载,压缩包的名字是jspSmartUpload.zip.下载后,将其解压到Tomcat的webapps目录下.解压后,将webapps/jspsmartupload目录下的子目录Web-inf名字改为全大写的WEB-INF,这样一改jspSmartUpload类才能使用.如果想让Tomcat服务器的所有Web应用程序都能用它,必须做如下工作: 1.进入命令行状态,将目录切换

Java使用Commons-FileUpload组件实现文件上传最佳方案

学习的目标 使用commons-fileupload实现文件上传 使用commons-fileupload封装文件上传工具类 什么是commons-fileupload? The CommonsFileUploadpackage makes it easy to add robust, high-performance, file upload capability to your servlets and web applications. FileUpload parses HTTP req