`
superallen
  • 浏览: 141713 次
  • 来自: ...
社区版块
存档分类

使用commons的fileupload来上传文件

阅读更多

    最近一段时间由于一直在忙着工作,所以都没有上来更新博客。现在项目终于告一段落了,终于有时间来写一下啦。先废话几句,这个项目又是工程性的项目,没什么技术含量,即使这样,开发也做了半年。做完后的感觉就像吃了一顿麦当劳、肯德基一样。什么意思?就是垃圾食品没营养。技术上没什么提高,也没时间去用一些新好技术,都是以前的那套东东,改来改去的,哎,,,这种项目做10个也没什么提高啊。

    好了,牢骚到此为止了。

    现在比较空闲,自己又开始瞎弄啦,哈哈。鉴于我们项目中的上传组件不太好用的问题,我去看了一下commons的fileupload。这个东东用的人比较多,很多大大也都用过,我在这里只把我自己的用法写出来,和大家分享一下。其实写这些主要是给我自己看的,免得以后用的时候又去重新查一遍文档。

    用法主要分两个部分,一个部分是JSP页面的,一个部分是servlet。

    先说JSP部分,比较简单,只需要对上传组件所在的form进行相应的设置即可,代码如下。

   

xml 代码
  1. <form action="./servlet/UploadAdvertisement" method="post" enctype="multipart/form-data" >  

 

    再来说一下servlet端。也许有人会问,能不能用struts的action。经过我的试验,结果证明是不行的。也许是由于struts的内部设置问题,具体原因我并没有去深究。

    写一个servlet,然后在它的doPost方法中对上传过来的内容进行处理。基本的代码如下:

java 代码
  1. // Create a factory for disk-based file items   
  2. FileItemFactory factory = new DiskFileItemFactory();   
  3. // Create a new file upload handler   
  4. ServletFileUpload upload = new ServletFileUpload(factory);   
  5. upload.setHeaderEncoding("GBK");//设置编码格式   
  6. // Parse the request   
  7. List /* FileItem */items = upload.parseRequest(request);  

 

     这段代码相对比较固定,也可以自己再把它封装一下。

    List中的FileItem对象,就是post过来的form中的所有对象。可以通过FileItem的isFormField()来判断这个对象是一个普通的Field还是上传附件的field.

    FileItem有write方法可以直接把上传过来的数据写入到一个文件当中,操作很方便。

    值得说明一下的就是中文的处理。其实很简单,上面的代码也提到了一部分,就是

    upload.setHeaderEncoding("GBK");//设置编码格式

    然后在读取FileItem的内容时,同样也要设置编码格式:

   

java 代码
  1. item.getString("GBK");  

    其中item是FileItem的实例。

    通过这两个地方的设置,就可以解决中文的问题了。

分享到:
评论
1 楼 longjinbo 2008-03-03  
<div class='quote_title'>superallen 写道</div><div class='quote_div'><p>再来说一下servlet端。也许有人会问,能不能用struts的action。经过我的试验,结果证明是不行的。也许是由于struts的内部设置问题,具体原因我并没有去深究。</p></div><br/>实际上是可以用struts的action的,只是这个action不要配actionForm就ok

相关推荐

    使用commons-fileupload上传文件

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

    commons-fileupload实现文件上传

    本篇将详细讲解如何使用Commons FileUpload来实现文件上传的功能。 首先,理解HTTP协议中的多部分数据是至关重要的。在HTML表单提交文件时,通常会使用`enctype="multipart/form-data"`属性,此时,数据会被分割成...

    使用commons-fileupload实现的文件上传和下载

    - **安全性**:限制上传文件的类型和大小,避免上传恶意文件。 - **性能优化**:使用缓冲区进行文件读写,减少I/O操作对系统的影响。 - **用户体验**:提供上传进度显示,让用户了解上传状态。 - **错误处理**:...

    基于apache commons.fileupload的文件上传组件,改进了上传速度

    apache commons.fileupload上传组件在上传文件时,在调用parseRequest方法时,先将输入流上传到服务器临时目录,在之后的文件处理过程中,再将临时目录下保存的文件复制到指定的目录,多了一道转储步骤。本实现抽取...

    fileupload commons-io上传文件

    标题"fileupload commons-io上传文件"指的是使用Commons IO和FileUpload库实现文件上传功能。在Java Web开发中,通常使用Servlet API来接收HTTP请求。但是,Servlet API本身并不直接支持多部分数据的解析,这时就...

    利用commons-fileupload上传组件上传文件(一)

    在本文中,我们将深入探讨如何使用Apache Commons FileUpload组件来实现文件上传功能。Apache Commons FileUpload是一个用于处理HTTP请求中的多部分数据的Java库,它使得在Servlet或JSP应用中处理文件上传变得简单易...

    Apache Commons fileUpload实现文件上传

    1. 安全性:确保验证上传文件的类型和大小,防止恶意文件上传。 2. 异常处理:捕获并处理解析、写入文件时可能出现的异常。 3. 性能优化:合理设置内存阈值,避免大文件一次性加载到内存。 4. 文件命名:避免使用...

    一个简单的使用commons-fileupload包上传文件的例子

    本示例将详细介绍如何使用`commons-fileupload`和`commons-io`这两个库来实现一个简单的文件上传功能。 首先,我们需要引入`commons-fileupload`和`commons-io`的依赖。在Maven项目中,可以在`pom.xml`文件中添加...

    commons-fileupload文件上传实例

    该库提供了解析请求、存储上传文件和处理异常的能力。 **二、基本原理** 文件上传涉及到客户端和服务器之间的交互。用户通过HTML表单选择文件后,浏览器将文件封装成多部分数据,发送到服务器。FileUpload库负责...

    commons-fileupload 文件上传 图片上传 demo

    以上就是关于`commons-fileupload`文件上传库的简要介绍,以及如何使用它来实现图片上传功能。这个库极大地简化了Java Web应用程序中文件上传的复杂性,使得开发者可以专注于业务逻辑,而不是底层的文件处理细节。

    commons-fileupload文件上传实例代码

    在使用`commons-fileupload`时,可以通过以下步骤来确保正确解码: - 创建` DiskFileItemFactory `对象,并设置字符编码,例如设置为UTF-8: ```java DiskFileItemFactory factory = new DiskFileItemFactory();...

    利用org.apache.commons.fileupload上传多个文件

    Apache Commons FileUpload 是一个用于处理 HTTP 请求中多部分(multipart)数据的 Java 库,尤其适合上传文件。在本文中,我们将深入探讨如何利用该库实现多个文件的上传功能。 一、准备工作 在使用 Apache ...

    commons-fileupload-1.2上传文件架包

    它们通常与FileUpload一起使用,因为文件上传涉及到输入输出流的处理以及对上传文件的一些操作,这些功能在这两个库中都有提供。 Apache Commons FileUpload的工作原理主要基于Servlet规范,它能够解析HTTP请求中的...

    commons-fileupload实现文件上传下载

    本文将详细介绍如何使用 Commons-FileUpload 实现文件的上传和下载功能。 #### 一、环境搭建与依赖引入 1. **Maven 依赖**: - 在项目的 `pom.xml` 文件中添加 Commons-FileUpload 和 Commons-Io 的依赖。 ```...

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

    在你的Action类(如UploadAction)中,你可以使用Commons-Fileupload库来解析请求并保存文件。首先,你需要导入必要的库,并创建一个DiskFileItemFactory和ServletFileUpload对象: ```java import org.apache....

    commons fileupload实现文件上传的实例代码

    1. 创建一个`DiskFileItemFactory`对象,它定义了临时存储上传文件的策略。 2. 使用`DiskFileItemFactory`创建一个`ServletFileUpload`实例,设置最大上传大小等配置。 3. 使用`ServletFileUpload.parseRequest...

    基于apache commons.fileupload的文件上传组件

    它负责解析请求并创建`FileItem`实例,然后你可以遍历这些实例来获取上传文件的信息。 4. **文件大小限制**:可以设置最大上传文件大小和整个请求的总大小限制。这可以通过`ServletFileUpload`的构造函数或`...

    org.apache.commons.fileupload 文件上传至数据库

    标题“org.apache.commons.fileupload 文件上传至数据库”指的是使用Apache Commons FileUpload库将用户上传的文件存储到数据库中的技术。Apache Commons FileUpload是Apache软件基金会的一个开源项目,它提供了一个...

    commons fileupload

    使用Commons FileUpload,开发者可以轻松地处理多个文件上传,同时检查文件大小,限制上传类型,以及进行错误处理。这个组件支持流式处理,这意味着它不需要一次性将整个文件加载到内存中,这对于处理大文件至关重要...

Global site tag (gtag.js) - Google Analytics