`
cjc
  • 浏览: 680768 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用Jakarta commons fileupload组件实现多文件上传

阅读更多

利用Jakarta commons fileupload组件实现多文件上传

曾经写过一篇 文章《利用MultipartFile实现文件上传》,可是最近在工作中,我需要同时上传多个文件,似乎用MultipartFile就不能胜任了,于是想到了Jakarta commons。Jakarta commons真是不错的,有那么多开源且好用的东东,太方便了。好了,闲话少说,开始介绍一下jakarta commons fileupload组件吧。
首先,需要到其官网上下载最新的jar包及其依赖的jar包,然后可以参考一下它的user guide,很简单,想信大家都能看懂,这里就把主要的内容提一下(相当于一个删减的翻译)。
一.基本原理
FileUpload组件将页面提交的所有元素(普通form表单域,如text和文件域file)都看作一样的FileItem,这样上传页面提交的request请求也就是一个FileItem的有序组合,FileUpload组件可以解析该request,并返回一个一个的FileItem。而对每一个FileItem,FileUpload组件可以判断出它是普通form表单域还是文件file域,从而根据不同的类型,采取不同的操作--如果是表单域,就读出其值,如果是文件域,就保存文件到服务器硬盘上或者内存中。
二.具体实现
对一个HttpRequest请求,我们要判断该请求是否是文件上传的请求
//Checkthatwehaveafileuploadrequest
booleanisMultipart=ServletFileUpload.isMultipartContent(request);
不过,个人觉得这个方法一般不需要,我们一般是在需要上传时才采用fileupload组件处理request请求的。
如果确实是文件上传的请求,我们如何解析该request呢?
至此我们已经的到了FileItem的list,对每个Item的处理要考虑是标准的form表单域还是上传文件file域,然后做不同的处理,可以通过以下方式实现:
//Processtheuploadeditems
Iteratoriter=items.iterator();
while(iter.hasNext())...{
FileItemitem
=(FileItem)iter.next();

if(item.isFormField())...{
processFormField(item);
}
else...{
processUploadedFile(item);
}

}
对于一个简单的form表单域,我们可以通过以下方法得到该域的相关信息:
//Processaregularformfield
if(item.isFormField())...{
Stringname
=item.getFieldName();
Stringvalue
=item.getString();
...
}
而对于一个upload file,我们则可以通过如下方式得到其相关信息:
//Processafileupload
if(!item.isFormField())...{
StringfieldName
=item.getFieldName();
StringfileName
=item.getName();
StringcontentType
=item.getContentType();
booleanisInMemory=item.isInMemory();
longsizeInBytes=item.getSize();
...
}
实际上,对于一个上传的文件,我们一般不会把它包存在内存中,除非它足够小。我们一般是把它保存到硬盘上,使用以下方法就可以将上传的文件保存到服务器硬盘上了:
FileuploadedFile=newFile(...);
item.write(uploadedFile);
好了,到了这里,fileupload组件的基本api已经介绍完了,大家应该有点轮廓了吧?
在下一篇文章中,我会对commons FileUpload组件稍作包装,并做个简单的demo
分享到:
评论

相关推荐

    Jakarta Commons FileUpload 用户指南

    - **Jakarta Commons FileUpload** 是一个用于处理HTTP文件上传的Java库,它基于**RFC1867**标准来解析和处理文件上传请求。 - **用户指南** 主要介绍了如何使用FileUpload来处理来自客户端的文件上传请求,包括基本...

    适配Jakarta的FileUpload

    修改部分了源代码,可以无缝适配Jakarta,可以在Tomcat10或JAVAEE9以上使用,其参照版本为commons-fileupload-1.4

    jakarta-commons 相关依赖包

    jakarta-commons 相关依赖包,文件列表: commons-attributes-api.jar commons-attributes-compiler.jar commons-beanutils.jar commons-codec.jar commons-collections.jar commons-dbcp.jar commons-digester.jar ...

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

    本篇文章将详细介绍如何利用Common-fileupload组件在JSP环境中实现文件上传功能。 #### 二、Common-fileupload组件介绍 Common-fileupload组件是由Apache开发维护的一个轻量级Java库,用于处理HTTP文件上传请求。...

    Jakarta Commons使用

    除了上述组件外,Jakarta Commons 还包括 BeanUtils、Codec、 Digester 等,它们提供了诸如对象属性映射、编码解码、XML 解析等功能,大大简化了 Java 开发中的常见任务。 通过了解和使用 Jakarta Commons,开发者...

    struts2上传文件需要的jar包 commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar

    `commons-fileupload-1.2.1.jar`是Apache Commons FileUpload组件的版本1.2.1,这个组件专门用于处理HTTP请求中的多部分数据,即文件上传。它提供了一套API,使得开发者可以轻松地从Servlet请求中解析出上传的文件和...

    commons-fileupload-1.3.2.jar

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

    struts2 文件下载需要的架包 commons-fileupload-1.2 commons-io-1.3.2

    以上就是关于Struts2中利用Apache Commons FileUpload和Apache Commons IO进行文件上传和下载的基本原理和实现流程。这两个库大大简化了处理文件操作的复杂性,提高了代码的可读性和可维护性。在实际开发中,应根据...

    Apache Jakarta Commons 使用手册

    - **应用场景**:在Web应用程序中实现文件上传功能时非常有用。 - **使用技巧**:可以通过设置配置项来控制文件大小限制、临时文件存储位置等参数,以满足不同场景的需求。 ##### 2.2 HttpClient - **功能简介**:`...

    commons-fileupload-1.2.1

    1. `commons-fileupload-1.2.1.jar`:这是核心库文件,包含了所有实现文件上传功能的类和方法。 2. `commons-fileupload-1.2.1-sources.jar`:可能包含源代码,方便开发者查看和学习内部实现。 3. `commons-...

    Jakarta Commons Online Bookshelf

    2. **文件上传与FileUpload**:详解FileUpload组件,教授用户如何处理HTTP POST请求中的文件上传。 3. **协议处理与Net组件**:探讨Net组件的使用,包括URL处理、代理配置和Socket通信。 4. **XML解析与Digester**:...

    fileupload文件上传与配置

    在实现文件上传功能时,我们通常需要以下步骤: 1. **创建Servlet**:创建一个Servlet来接收HTTP请求。这是文件上传的入口点,你需要在这里解析请求并处理文件。 2. **配置Servlet**:在`web.xml`文件中配置...

    介绍Jakarta Commons的烹饪书

    3. **FileUpload组件**:处理HTTP文件上传是Web开发中常见的需求,Commons-FileUpload模块提供了一个简单易用的API,能够优雅地处理大文件上传和多部分表单数据。 4. **Net组件**:Commons-Net库提供了丰富的网络...

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

    本文将介绍如何使用JSP组件commons-fileupload来实现文件上传功能。 首先,commons-fileupload是Apache Jakarta项目下的一个开源组件,专门用于处理基于HTTP的文件上传。它可以和commons-io库一起使用,该库提供了...

    Jakarta commons docs API CHM 格式

    commons-fileupload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力 commons-io 用来帮助进行IO功能开发.它包含三个主要的领域:Utility classes-提供一些静态方法来完成公共任务.Filters-...

    JAKARTA COMMONS

    15. **Commons Email** 和 **FileUpload**: 支持在应用程序和 Servlet 中轻松添加强大的文件上传功能,以及发送电子邮件。 16. **Commons HttpClient**: 提供 HTTP 客户端框架,支持多种 HTTP 功能和协议。 17. **...

    [Jakarta Commons笔记]

    Jakarta Commons包含了多个子项目,每个子项目专注于一个特定的领域,如文件上传、字符串处理、网络通信等。 在源码分析方面,Jakarta Commons的代码质量高,设计模式应用广泛,是学习Java编程和理解面向对象设计的...

Global site tag (gtag.js) - Google Analytics