`
jcyanfan
  • 浏览: 74754 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

common-fileupload

阅读更多
进行文件上传一般有三种方式
1.        使用 fileUpLoad
2.        使用 smartFileUpLoad
3.        自己编写类似的程序进行解析

fileUpLoad apache 的一个开源项目,用来进行解析带有文件的请求处理。著名的 struts FormFile 就是用的它进行解析处理的。

1.        首先页面上我们需要将表单设置下面类似的参数:
< form method="post" enctype="multipart/form-data" action=”” >

2.        然后我们需要在工程里导入所需要的包,可以在 apache 网站上下载:
http://jakarta.apache.org/commons/fileupload/

3.        在我们的servlet中可以获取到request参数,然后可以这样取传递过来的字段参数及文件参数:

下载commons-fileupload-1.2.1.jar,commons-io-1.3.jar放到Project-name\WEB-INF\lib下

-------------------------------------------------------

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;
import org.apache.commons.fileupload.*;

public class FileUpload
    extends HttpServlet {
  private static final String CONTENT_TYPE = "text/html; charset=GB2312";
  //Process the HTTP Post request
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws
      ServletException, IOException {
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    try {
      //临时缓冲文件目录,此处系统默认
      File tempfile = new File(System.getProperty("java.io.tmpdir"));
      DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
      // 设置最多只允许在内存中存储的数据,单位:字节
      diskFileItemFactory.setSizeThreshold(4096);
      //设置缓冲区目录,一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
      diskFileItemFactory.setRepository(tempfile);
      ServletFileUpload upload = new ServletFileUpload(diskFileItemFactory);
      //DiskFileUpload upload = new DiskFileUpload(diskFileItemFactory);
      //设置编码,解决上传文件名乱码
      upload.setHeaderEncoding("GBK");
      // 设置允许用户上传文件大小,单位:字节,这里设为2M
      upload.setSizeMax(2 * 1024 * 1024);
      //开始读取上传信息
      List fileItems = upload.parseRequest(request);
      // 依次处理每个上传的文件
      Iterator iter = fileItems.iterator();
      //正则匹配,过滤路径取文件名
      String regExp = ".+(.+)$";
      //过滤掉的文件类型
      String[] errorType = {
          ".exe", ".com", ".cgi", ".asp"};
      Pattern p = Pattern.compile(regExp);
      while (iter.hasNext()) {
        FileItem item = (FileItem) iter.next();
        //忽略其他不是文件域的所有表单信息
        if (!item.isFormField()) {
          String name = item.getName();
          long size = item.getSize();
          if ( (name == null || name.equals("")) && size == 0) {
            continue;
          }
          Matcher m = p.matcher(name);
          boolean result = m.find();
          if (result) {
            for (int temp = 0; temp < errorType.length; temp++) {
              if (m.group(1).endsWith(errorType[temp])) {
                throw new IOException(name + ": wrong type");
              }
            }
            //保存上传的文件到指定的目录
            //在下文中上传文件至数据库时,将对这里改写
            item.write(new File("d:\\" + m.group(1)));
            out.print(name + " " + size + "");
          }
        }
      }
    }
    catch (IOException e) {
      e.printStackTrace();
    }
    catch (FileUploadException e) {
      //e.printStackTrace();
    }
  }
}

 

分享到:
评论

相关推荐

    最全的common-FileUpload.jar包

    这个"最全的common-FileUpload.jar包"结合了两个关键的Apache Commons库,为开发者提供了强大的文件上传解决方案,无论是小型项目还是大型企业级应用,都能从中受益。通过深入理解和有效利用这些工具,可以极大地...

    common-io,common-fileupload.jar等jar包

    下面将详细阐述`common-io`和`common-fileupload`这两个关键组件的主要功能和知识点。 1. **Apache Commons IO** (`common-io.jar`) - **文件和流操作**: 提供了大量与文件和流操作相关的工具类,如`FileUtils`、`...

    利用Common-fileupload封装的文件上传组件...附上源码.

    在文件列表中,“FileUpload--develop”可能是项目的源码仓库或某个开发分支。这通常包含了`Common-fileupload`的源代码、构建脚本、测试用例以及其他辅助文件。通过研究这些源码,我们可以深入学习如何实现文件上传...

    两篇网文:拦截器 Common-FileUpload

    Common-FileUpload是Apache Commons项目的一部分,提供了强大的文件上传功能。下面将详细探讨这两个知识点。 首先,我们来看Struts2的拦截器。Struts2的拦截器是一种AOP(面向切面编程)的概念,它们在Action调用...

    common-fileupload api

    common-fileupload官方文档

    commons-fileupload-1.3.3-API文档-中文版.zip

    赠送jar包:commons-fileupload-1.3.3.jar; 赠送原API文档:commons-fileupload-1.3.3-javadoc.jar; 赠送源代码:commons-fileupload-1.3.3-sources.jar; 赠送Maven依赖信息文件:commons-fileupload-1.3.3.pom;...

    使用Common-fileUpload 上传文件 读取文件内容

    本篇文章将详细讲解如何使用`Commons-FileUpload`进行文件上传,并读取上传文件的内容。 首先,了解`Commons-FileUpload`的工作原理。它解析HTTP请求,将多部分的数据分割成单独的部分,这些部分可以是文本或文件。...

    commons-fileupload-1.2.2

    commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-...

    common-fileupload文件上传及下载

    在`MyProject`这个压缩包中,可能包含了使用`common-fileupload`进行文件上传和下载的示例代码,你可以解压后查看具体实现。通过阅读和理解代码,可以更好地掌握文件上传下载的实践应用。在实际开发中,结合源码和...

    common-fileupload控件不能删除临时文件的原因分析

    common-fileupload控件不能删除临时文件的原因分析 1.分析原因 2.出现条件 3.过程分析 4.解决办法

    自己在用的 common-FileUpload.jar

    压缩包子文件的文件名称列表中,"commons-fileupload-1.2.1.jar"是Apache Commons FileUpload的特定版本,1.2.1表示这是该库的第1.2.1次发布。版本号通常伴随着修复错误、添加新功能或优化性能等改进。"121.txt"可能...

    Common-FileUpload带进度条文件上传

    "Common-FileUpload带进度条文件上传"是一个专门处理这种需求的解决方案,它允许用户在上传文件时看到进度条,提供更好的用户体验。下面我们将详细探讨这个主题以及相关知识点。 1. 文件上传的基本原理:在Web开发...

    common-fileupload&amp;common-io

    "common-fileupload"和"common-io"是Apache Commons项目中的两个重要组件,它们为处理文件上传和输入/输出提供了强大的支持。接下来,我们将详细讨论这两个库的功能、使用方法及其在JSP应用中的重要性。 Apache ...

    commons-fileupload-1.3.3&commons-fileupload-1.3.3架包和代码.rar

    标题中的"commons-fileupload-1.3.3&commons-fileupload-1.3.3架包和代码.rar"提到了Apache Commons FileUpload的1.3.3版本的库及其源码。Apache Commons FileUpload是一个Java库,专门用于处理HTTP协议中的多部分...

    Common-fileupload组件实现文件上传.pdf

    2. **部署组件**:将下载的jar文件(例如commons-fileupload-1.0.jar)复制到Tomcat服务器的webapps/你的web应用/WEB-INF/lib/目录下。如果目录不存在,则需要自行创建。 #### 四、实现文件上传 为了实现文件上传...

    commons-fileupload-1.3.1-API文档-中文版.zip

    赠送jar包:commons-fileupload-1.3.1.jar; 赠送原API文档:commons-fileupload-1.3.1-javadoc.jar; 赠送源代码:commons-fileupload-1.3.1-sources.jar; 包含翻译后的API文档:commons-fileupload-1.3.1-...

    common-fileupload.jar

    包括commons所有的18个工具包: validator、pool、beanutil、logging、dbcp、collections、codec、digester、discover、email、fileupload、httpclient、jelly、jxpath、lang、modeler、net

    java 图片上传系统 common-fileUpload

    Java 图片上传系统基于 `common-fileUpload` 模块实现,这是一个常见的用于处理文件上传的Java库。在Java Web开发中,文件上传功能是必不可少的一部分,尤其在涉及到用户提交图片时。`common-fileUpload` 是Apache ...

    commons-fileupload-1.4.jar

    commons-fileupload-1.4.jar

Global site tag (gtag.js) - Google Analytics