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

文件上传:Java Commons-fileupload组件

阅读更多

基于表单的文件上传

如果在表单中使用表单元素 <input type=“file” />,浏览器在解析表单时,会自动生成一个输入框和一个按钮,输入框可供用户填写本地文件的文件名和路径名,按钮可以让浏览器打开一个文件选择框供用户选择文件:

当表单需要上传文件时,需指定表单 enctype 的值为 multipart/form-data

在 form 元素的语法中,enctype 属性指定将数据发送到服务器时浏览器使用的编码类型。

enctype 属性取值:

application/x-www-form-urlencoded:表单 enctype 属性的默认值。这种编码方案使用有限的字符集,当使用了非字母和数字时,必须用”%HH”代替(H 代表十六进制数字)。对于大容量的二进制数据或包含非 ASCII 字符的文本来说,这种编码不能满足要求。

multipart/form-data :form 设定了enctype=“multipart/form-data”属性后,表示表单以二进制传输数据 .

Commons-fileupload 组件上传的基本原理

FileUpload组件将页面提交的所有元素(普通form表单域,如text和文件域file)都看作一样的FileItem,这样上传页面提 交的 request请求也就是一个FileItem的有序组合,FileUpload组件可以解析该request,并返回一个一个的FileItem。而对 每一个FileItem,FileUpload组件可以判断出它是普通form表单域还是文件file域,从而根据不同的类型,采取不同的操作--如果是 表单域,就读出其值,如果是文件域,就保存文件到服务器硬盘上或者内存中

Commons-fileupload 组件API
ServletFileUpload 负责处理上传的文件数据,并将每部分的数据封装成一到 FileItem 对象中。
DiskFileItemFactory 是创建 FileItem 对象的工厂,在这个工厂类中可以配置内存缓冲区大小和存放临时文件的目录。
ServletFileUpload 在接收上传文件数据时,会将内容保存到内存缓存区中,如果文件内容超过了 DiskFileItemFactory 指定的缓冲区的大小,那么文件将被保存到磁盘上,存储为 DiskFileItemFactory 指定目录中的临时文件。等文件数据都接收完毕后,ServletUpload 在从文件中将数据写入到上传文件目录下的文件中

进行文件上传的具体操作:

首先,加载必要的jar包:“commons-fileupload-1.2.1.jar”

//使用 FileUpload 组件解析表单:

DiskFileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

// 解析表单传递过来的数据,返回List集合数据-类型:FileItem

List  items  = upload.parseRequest(request);

// 取得其迭代器

Iterator itr = items.iterator();

//检查序列中是否还有元素

while (itr.hasNext()) {

//获得序列中的下一个元素

FileItem item = (FileItem) itr.next();

//判断是文件还是文本信息

if (item.isFormField()) {

// 当判断 item 为 Form 域时,把取得的值传给创建的 User 对象

}else{

//判断是否选择了文件

if ( item.getName() != null  &&  !item.getName().equals("") ) {

上传文件的大小:item.getSize()
上传文件的类型: item.getContentType()
上传文件的名称和完整路径: item.getName()

//构造临时对象

File tempFile = new File(item.getName())

//第一个参数是:完整路径(不包括文件名)第二个参数是:文件名称

File file = new File(sc.getRealPath("/") + savePath, tempFile.getName())

// 获取根目录对应的真实物理路径

 item.write(file);// 保存文件在服务器的物理磁盘中

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/virus026/archive/2010/04/20/5503526.aspx

分享到:
评论

相关推荐

    commons-fileupload组件上传问题

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

    commons-fileupload组件和commons-io组件

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

    commons-fileupload-1.3.3-bin

    总的来说,Apache Commons FileUpload 1.3.3是Java Web开发中处理文件上传不可或缺的工具,结合Apache Commons IO,可以构建出高效、安全的文件上传功能。这两个库都是Java生态系统的重要组成部分,大大提高了开发...

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

    在Java Web开发中,文件的上传与下载是常见的功能需求,尤其...通过以上步骤,你可以实现基于Java Servlet和Apache Commons库的文件上传与下载功能。理解并熟练掌握这些知识点,对于开发高效、稳定的Web应用至关重要。

    commons-fileupload.jar和commons-io.jar

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

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

    综上所述,这些组件的结合使用,可以构建一个健壮的、能够处理文件上传以及与数据库交互的Java Web应用,是Java开发中常见的技术栈配置。开发者在实际项目中,可以通过这些工具来提升应用的稳定性和效率。

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

    总的来说,`commons-fileupload-1.3.3.jar` 和 `commons-io-2.5.jar` 这两个库为Java开发者提供了强大而便捷的文件上传解决方案,它们简化了原本复杂的过程,使开发者可以更专注于业务逻辑,而不是底层的文件处理...

    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和Commons IO是Java开发中两个非常重要的库,尤其在处理文件上传功能时。这两个库由Apache软件基金会维护,是许多Java Web应用程序的标准组成部分。 `commons-fileupload-1.3.2.jar`是Apache ...

    Java Web上传组件使用:Commons-fileupload

    本文将深入探讨如何使用Commons FileUpload组件来处理文件上传。 Apache Commons FileUpload是Apache Commons项目的一部分,专门设计用于处理HTTP请求中的多部分数据,即通常在HTML表单中用于文件上传的数据格式。...

    commons-fileupload及源码

    FileUpload组件的核心功能是解析HTTP请求中的多部分数据(Multipart Form Data),这是HTML表单中用于上传文件的标准格式。它的工作原理如下: 1. **解析请求**:当用户通过HTML表单提交包含文件的请求时,服务器端...

    commons-fileupload-1.3.2.jar

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

    commons-fileupload-1.3.1.jar

    "commons-fileupload-1.3.1.jar" 是Apache Commons FileUpload项目的版本1.3.1的Java档案文件,这个库专门设计用于处理HTTP协议中的文件上传功能。在Web开发中,尤其是基于Java的服务器端应用程序,文件上传是常见的...

    java 上传 SmartUpload&commons-fileupload

    本主题将深入探讨两种常见的Java上传组件——SmartUpload和Commons-Fileupload。 SmartUpload是一个强大的Java上传组件,由Julien DROUET开发,它为JSP和Servlet提供了方便的文件上传功能。SmartUpload提供了一套...

    commons-fileupload-1.4-bin.zip

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

    commons-fileupload-1.2.1.rar源文件及jar文件

    总之,Apache Commons FileUpload 1.2.1是处理Java Web应用中文件上传的关键工具,其源代码和JAR文件为开发者提供了强大的功能和灵活性,同时也需要开发者对其使用和潜在的安全风险有深入的理解。

    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上传文件】 Apache Commons FileUpload是Apache组织的一个子项目,专注于处理HTTP文件上传。这个组件提供了一个简洁的API,使得开发者能够轻松地在Java应用中处理由浏览器发送的多部分...

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

    【基于commons-fileupload组件的上传下载】是一种在J2EE环境下处理文件上传和下载功能的技术。这个组件是Apache Commons项目的一部分,提供了强大的文件上传能力,适用于JSP和Servlet应用程序。以下将详细介绍如何...

    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请求中解析出上传的文件和...

Global site tag (gtag.js) - Google Analytics