`
jackson_jar
  • 浏览: 36841 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

commons-fileupload组件实现多文件上传

    博客分类:
  • java
阅读更多

java servlet代码:

 

package photo;

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Iterator;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**

 *

 *

 */

public class Upload extends HttpServlet {

     /**

      *

      */

     private static final long serialVersionUID = 1L;

 

     public void doPost(HttpServletRequest request, HttpServletResponse response)

              throws ServletException, IOException {

         response.setContentType("text/html; charset=GB2312");

         PrintWriter out = response.getWriter();

         try {

              DiskFileItemFactory factory = new DiskFileItemFactory();

 

              ServletFileUpload sevletFileUpload = new ServletFileUpload(factory);

              // 设置允许用户上传文件大小,单位:字节,这里设为2m

              sevletFileUpload.setSizeMax(2 * 1024 * 1024);

              // 设置最多只允许在内存中存储的数据,单位:字节

              factory.setSizeThreshold(4096);

              // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录

              factory.setRepository(new File("d:\\temp"));

              // 开始读取上传信息

              List fileItems = sevletFileUpload.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 + ": 非法文件类型禁止上传");

                                 }

                            }

                            try {

                                 // 保存上传的文件到指定的目录

                                 // 在下文中上传文件至数据库时,将对这里改写开始

                                 item.write(new File("d:\\uploadfile\\"+ m.group(1)));

有完整的使用手册,见附件。

分享到:
评论

相关推荐

    commons-fileupload组件和commons-io组件

    **Commons-Fileupload组件** Commons-Fileupload是Apache Commons项目的一个子项目,专门设计用于处理Servlet容器中的文件上传请求。它提供了一套API,使得开发者可以方便地解析HTTP请求中的多部分(multipart)...

    commons-fileupload组件上传问题

    通过阅读这篇博客,开发者可以更好地理解如何在Java Web应用中使用`commons-fileupload`组件实现安全、高效的文件上传功能。 总结起来,`commons-fileupload`组件是处理HTTP文件上传的利器,它简化了文件上传的流程...

    commons-fileupload-1.3.3.jar commons-io-2.5.jar

    `commons-fileupload-1.3.3.jar` 是这个库的特定版本,它包含了处理文件上传的核心组件。该库提供了一套完整的API,允许开发者解析HTTP请求中的文件项,进而可以将这些文件存储到服务器上。这个版本的更新可能包括了...

    java+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载

    而Apache Commons FileUpload则专门用于处理HTTP请求中的多部分数据,即文件上传。 二、Servlet基础知识 Servlet是Java平台上的一个服务器端组件,用于扩展Web服务器的功能。在文件上传和下载场景中,Servlet接收...

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

    Apache Commons FileUpload是一个Java库,专门用于处理HTTP协议中的多部分文件上传请求。在Web应用程序中,它允许用户上传文件到服务器,这对于处理用户提交的图片、文档或其他类型的数据至关重要。 描述中提及的...

    commons-fileUpload组件

    标题"commons-fileUpload组件"指的是Apache Commons FileUpload,这是一个Java库,专门用于处理HTTP请求中的文件上传。它与另一个组件Apache Commons IO紧密协作,为Java应用程序提供方便、高效的文件上传功能。 ...

    commons-fileupload-1.3.2.jar和commons-io-2.5.jar

    `commons-fileupload-1.3.2.jar`是Apache Commons FileUpload的实现,它提供了一套完整的解决方案来处理HTTP请求中的多部分数据,也就是我们常说的文件上传。这个版本1.3.2是在不断改进和优化后的产物,修复了之前...

    commons-fileupload.jar和commons-io.jar

    Apache Commons FileUpload和Commons IO两个库是Java中处理文件上传的关键组件,它们为SpringMVC和MyBatis这样的框架提供了强大的支持。本篇文章将深入探讨这两个库以及它们在图片处理中的作用。 首先,`commons-...

    commons-fileupload及源码

    7. **与其他库的集成**:Apache Commons FileUpload可与Servlet API、Spring MVC、Struts等Web框架无缝集成,简化了在这些框架中实现文件上传的复杂性。 源码分析对于理解其内部工作原理非常有帮助。`commons-...

    commons-fileupload-1.3.3-bin

    5. **多文件上传**:Apache Commons FileUpload支持单个文件和多个文件的上传,可以通过`&lt;input type="file" multiple&gt;`在HTML表单中实现。 在压缩包中,除了`commons-fileupload-1.3.3-bin`外,还包含了一个`...

    commons-fileupload-1.3.1.jar

    Apache Commons FileUpload库简化了这一过程,提供了高效且灵活的文件上传解决方案。 Apache Commons是Apache软件基金会的一个项目集合,它提供了许多实用工具类和组件,用于解决Java编程中的常见问题。"commons...

    commons-fileupload实现文件上传下载

    ### Commons-FileUpload 实现文件上传下载 #### 知识点概述 Commons-FileUpload 是 Apache 提供的一个用于处理 HTTP 文件上传的组件。它基于 Servlet 规范,并且能够解析来自 `multipart/form-data` 编码类型的 ...

    commons-fileupload-1.3.2.jar

    总之,Apache Commons FileUpload是Java Web开发中处理文件上传不可或缺的工具,它提供了高效、灵活且安全的文件上传解决方案。通过理解和熟练运用这个库,开发者可以轻松地在自己的应用中实现复杂的文件上传功能。

    commons-fileupload-1.4-bin.zip

    《Apache Commons FileUpload组件详解》 Apache Commons FileUpload是一个用于处理HTTP请求中多部分数据的Java库,尤其在上传文件时极为有用。标题中的"commons-fileupload-1.4-bin.zip"表明这是一个包含Apache ...

    struts1.2和commons-fileupload实现文件上传

    Struts1.2和Commons-Fileupload是Java Web开发中用于实现文件上传的两个重要组件。Struts1.2是Apache的一个开源框架,主要用于构建MVC(模型-视图-控制器)架构的Web应用程序,而Commons-Fileupload则是Apache ...

    commons-fileupload-1.2.jar和commons-io-1.3.2.jar

    common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载。该组件简单易用,可实现一次上传一个或多个文件,并可限制文件大小。 -下载后解压zip包,将commons-...

    基于commons-fileupload组件的上传下载

    以下将详细介绍如何使用commons-fileupload组件实现文件上传和下载。 首先,你需要在项目中引入必要的依赖库。如【描述】中所述,需要导入`javacommons-fileupload-1.2.1.jar`和`commons-io-1.4.jar`两个文件,这两...

    利用commons-fileupload组件实现文件上传-实例

    通过以上步骤,我们就使用Apache Commons FileUpload组件实现了一个基本的文件上传功能。你可以根据自己的需求对这个示例进行扩展,比如添加错误处理、文件类型检查和存储优化等。参考提供的博文链接,可以获取更多...

    commons-fileupload-1.0上传组件使用实例.

    接下来我们将根据提供的代码示例来详细了解如何使用`commons-fileupload`实现文件上传功能。 1. **前端表单设计**: - 创建一个HTML表单,用于收集用户上传的文件。 - 表单的`method`属性设置为`POST`,`enctype`...

Global site tag (gtag.js) - Google Analytics