`
plkong
  • 浏览: 176804 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

FileUpload用户使用指南

阅读更多

<!---->

      最近项目中用到文件的上传下载功能,网上找了下发现JSP组件有两种:1. JSPSmartUpload ; 2 . FileUpload 。发现JSPSmartUpload网上的资料多点,但JSPSmartUpload只是免费使用的并未开放源代码,再者发现支持该组件的网站已经关闭。所以还是选择使用开源的FileUpload组件,但发现相关资料不是很多。一时来潮,就自己动手先把FileUpload用户使用指南翻译下,英语水平有限,借助Google翻译勉强过把翻译瘾。希望各位同僚提出修改及纠错意见。原文是下载包中commons-fileupload-1.2.1/site/using.html文件。

 

一、 使用组件FileUpload

可以通过许多种不同的方式使用组件FileUpload,这个主要取决于你的应用程序。在最简单的情况下,你可以调用单一的方法去解析这个Servlet Request,然后处理选项列表,并应用到你的应用程序。另一方面,你可能决定自定义FileUpload,实现对选项列表种个别项完全控制。例如:你可以将内容注入到数据库。

这里,我们将描述组件FileUpload的基本原则,并讲解一些简单的、常用的使用模式。FileUpload自定制将在其他地方描述。

组件FileUpload依赖于Commons IO组件,因此在继续之前,要确保在你的工程classpath中有描述页中提到的相应版本。(这里FileUpload版本为:commons-fileupload-1.2.1,Commons IO版本为:commons-io-1.4)

 

二、 组件FileUpload是怎样工作的

上传的文件要求包括一个根据RFC 1867(在HTML中基于表单的文件)编码的选项列表清单。组件FileUpload可以解析这个请求,并给你的应用程序提供一份独立上传的项目清单。无论每个项目背后如何执行都实现了FileItem接口。

这里将描述组件FileUpload库的普通API,这些API比较简单。不过,对于最终的实现,你可以参考最新的API流。

每一个文件项目都有一些属性,这些可能在你的应用程序中应用到。比如:每一个项目有一个名称name和内容类型congtent type,并提供了一个InputStream访问其数据。另一方面,你处理项目的方法可能有所不同,这个依赖于是否这个项目是一个规则的表单域,即:这个数据是来自普通的表单文本,还是普通的HTML域或是一个上传文件。在FileItem接口中提供了处理这些问题的方法,可以更加方便的去访问这些数据。

组件FileUpload使用FileItemFactory工厂创建新的文件项目。这个给了组件FileUpload很大的灵活性。这个工厂拥有怎样创建项目的最终控制权。工厂执行过程中上传项目文件的临时数据可以存储在内存中或硬盘上。这个依赖于上传项目的大小(即:数据的字节)。不过这种行为可以在你的应用程序中适当的自定制。

三、 解析request

在实现上传项目之前,当然需要解析这个请求。确保这个请求的确是一个正确的上传文件,组件FileUpload为了使这个判断简单,提供了一个静态的方法去做这个事情。

// Check that we have a file upload request 

boolean isMultipart = ServletFileUpload.isMultipartContent(request); 

现在我们正准备解析其请求到它的组成项目中。

四、 最简单的例子

最简单的使用情况如下:

上传项目只要足够小,就应该将其保存在内存中。

较大的项目应该被写入到硬盘的临时文件中。

应该避免有非常大的上传项目。

设置项目默认的在内存中所占的空间,限制最大的上传请求,并设定临时文件  的位置。

处理这种情况下的请求非常的简单:

// Create a factory for disk-based file items 

FileItemFactory factory = new DiskFileItemFactory(); 

 

// Create a new file upload handler 

ServletFileUpload upload = new ServletFileUpload(factory); 

 

// Parse the request 

List /* FileItem */ items = upload.parseRequest(request); 

这就是我们真正需要的全部代码。

处理的结果是生成了一个文件件项目列表,每个文件项目实现一个FileItem接口。下面将介绍如何处理这些项目。

五、 实施更多的控制

如果你的使用清况和上面描述的例子很接近,但是你需要在一点更多的控制限定文件爱你大小或临时文件的存放位置。你可以很容易的自定义上传实例或文件项目或两者的行为。下面例子展示了几种配置选项:

// Create a factory for disk-based file items 

DiskFileItemFactory factory = new DiskFileItemFactory(); 

 

// Set factory constraints 

factory.setSizeThreshold(yourMaxMemorySize); 

factory.setRepository(yourTempDirectory); 

 

// Create a new file upload handler 

ServletFileUpload upload = new ServletFileUpload(factory); 

 

// Set overall request size constraint 

upload.setSizeMax(yourMaxRequestSize); 

 

// Parse the request 

List /* FileItem */ items = upload.parseRequest(request); 

 

当然,每一个配置处理方法都是独立于其他方法的,但是如果你想一次性配置这个工厂,你可以使用工厂的另一个重载方法。像这样:

 

// Create a factory for disk-based file items 

DiskFileItemFactory factory = new DiskFileItemFactory( 

        yourMaxMemorySize, yourTempDirectory); 

 

如果你还需要更多的控制请求的解析,比如存储项目到其它地方(如:数据库),你将需要看看FileUpload自定义(注:不知道为什么这里链接过去的页面什么也没有)。 

 

3
1
分享到:
评论
1 楼 dishell 2008-09-17  
我也在学习中

相关推荐

    文件上传组件commons-fileupload用户指南

    文件上传组件commons-fileupload用户指南文件上传组件commons-fileupload用户指南

    Jakarta Commons FileUpload 用户指南

    - **用户指南** 主要介绍了如何使用FileUpload来处理来自客户端的文件上传请求,包括基本使用方法和高级定制选项。 #### 二、FileUpload 的工作原理 - **文件上传请求** 通常包含了一系列按照**RFC1867**标准编码...

    java文件上传commons-fileupload用户指南

    通过阅读《文件上传组件commons-fileupload用户指南.chm》文件,你可以深入理解如何在实际项目中使用Apache Commons FileUpload,解决文件上传的各种需求。这份指南通常会详细解释每个类和方法的使用,以及示例代码...

    文件上传组件_Apache_Commons_FileUpload_应用指南.pdf

    本文档主要介绍了 Apache Commons FileUpload 组件的应用指南,旨在帮助开发者快速了解和使用该组件实现文件上传功能。 一、为什么需要文件上传组件? 几乎每一个 Web 应用中都需要为用户提供文件上传的功能,例如...

    文件上传组件-Apache-Commons-FileUpload-应用指南.docx

    以下是对Apache Commons FileUpload组件的应用指南: 1. **获取上传组件**: - 首先,你需要访问Apache Commons FileUpload的官方网站(http://commons.apache.org/proper/commons-fileupload/)下载最新版本的...

    文件上传组件-Apache-Commons-FileUpload-应用指南.pdf

    要使用Apache Commons FileUpload,首先需要从Apache官方网站下载最新版本的库文件。通常,你需要两个类库文件:`commons-fileupload-x.x.x.jar`和`commons-io-x.x.x.jar`。下载后,将它们放入项目的类路径中,以便...

    FileUpload

    综上所述,"FileUpload"文件包提供的可能是这样一个全面的文件上传解决方案,包含了前端和后端的实现细节,以及相应的用户指南,有助于开发者高效地集成文件上传功能到自己的应用中。通过阅读和理解提供的文档,...

    fileupload-1.2.1.zip

    2. 文档:可能包括用户指南、API文档或示例代码,帮助开发者了解如何使用这个库。 3. 示例:可能提供一些示例代码,演示如何在实际项目中集成和使用FileUpload库。 4. 依赖库:可能包含库运行所需的其他依赖项,如...

    Java 文件上传组件 Apache Commons FileUpload 应用指南

    以下是对 FileUpload 组件的详细解释及其应用指南: 1. **文件上传原理** - RFC1867 引入了在 HTML 表单中上传文件的功能,要求使用 `multipart/form-data` 编码类型。客户端浏览器在提交包含文件的表单时,会将...

    commons-fileupload文档及源代码.rar

    `common_fileupload详解.doc`文档应该提供了关于库的详细使用指南、API参考和示例代码。通过阅读文档,你可以快速掌握如何在项目中集成和使用`commons-fileupload`。 总的来说,Apache Commons FileUpload库极大地...

    fileupload文件上传与配置

    `Jakarta Commons FileUpload 用户指南.pdf`提供了详细的官方文档,可以帮助开发者深入理解API的使用和最佳实践。`Upload.ppt`可能是一个演示文稿,详细解释了文件上传的过程和关键步骤。 在`用fileupload处理文件...

    用commons-fileupload做成的学习例子

    【描述】提到的"使用commons-fileupload实现单个和多个文件上传"意味着这个示例将展示如何通过这个库来接收用户通过表单提交的文件。FileUpload库提供了一套接口和类,使得处理复杂的文件上传过程变得简单。它能够...

    fileupload

    【标题】"fileupload" 涉及的知识点主要集中在网站开发中的文件上传功能实现,尤其是用户界面(UI)部分的简单上传控件设计。在Web应用开发中,文件上传是一个常见的需求,允许用户将本地计算机上的文件传输到服务器...

    TP5+fileupload上传图片功能实现.rar

    9. `README.md`:项目介绍和指南,通常包含如何安装、使用项目的信息。 10. `extend`:自定义扩展目录,可以放置自定义的类库和组件。 实现TP5的图片上传功能,一般步骤包括: 1. 前端创建一个表单,包含`...

    commons-fileupload jar包+文档+源码

    提供的文档通常包括API参考手册、用户指南和示例代码,帮助开发者了解如何使用这个库。这些文档可以帮助你理解各个类和方法的作用,以及如何正确地配置和调用它们。例如,你可以在文档中找到如何创建一个Servlet来...

    jsps上传图片FileUpload

    提供的PPT和用户指南应该包含了关于如何使用Apache Commons FileUpload库的详细步骤,包括配置、解析请求、处理文件项以及异常处理等。API文档则提供了库函数和类的详细信息,帮助开发者更好地理解和使用库。 7. *...

Global site tag (gtag.js) - Google Analytics