`
cjc
  • 浏览: 690041 次
  • 性别: 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的FileUpload

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

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

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

    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 ...

    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-...

    commons-fileupload详解

    ### commons-fileupload详解 ...通过以上步骤,开发者可以轻松地在Web应用中实现文件上传功能。`commons-fileupload`不仅简化了文件上传过程中的复杂编程任务,还提供了灵活的配置选项,适用于各种不同的应用场景。

    Jakarta Commons Online Bookshelf

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

    比较全面的:Jakarta-commons jar包(附: chm参考手册 & 资源简介)

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

    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-...

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

    该组件简单易用,可实现一次上传一个或多个文件,并可限制文件大小。 -下载后解压zip包,将commons-fileupload-1.1.1.jar,和commons-io-1.2.jar(这里我们用的是更新的版本,但是用法是一样的)复制到tomcat的webapps...

Global site tag (gtag.js) - Google Analytics