最近一段时间由于一直在忙着工作,所以都没有上来更新博客。现在项目终于告一段落了,终于有时间来写一下啦。先废话几句,这个项目又是工程性的项目,没什么技术含量,即使这样,开发也做了半年。做完后的感觉就像吃了一顿麦当劳、肯德基一样。什么意思?就是垃圾食品没营养。技术上没什么提高,也没时间去用一些新好技术,都是以前的那套东东,改来改去的,哎,,,这种项目做10个也没什么提高啊。
好了,牢骚到此为止了。
现在比较空闲,自己又开始瞎弄啦,哈哈。鉴于我们项目中的上传组件不太好用的问题,我去看了一下commons的fileupload。这个东东用的人比较多,很多大大也都用过,我在这里只把我自己的用法写出来,和大家分享一下。其实写这些主要是给我自己看的,免得以后用的时候又去重新查一遍文档。
用法主要分两个部分,一个部分是JSP页面的,一个部分是servlet。
先说JSP部分,比较简单,只需要对上传组件所在的form进行相应的设置即可,代码如下。
xml 代码
- <form action="./servlet/UploadAdvertisement" method="post" enctype="multipart/form-data" >
再来说一下servlet端。也许有人会问,能不能用struts的action。经过我的试验,结果证明是不行的。也许是由于struts的内部设置问题,具体原因我并没有去深究。
写一个servlet,然后在它的doPost方法中对上传过来的内容进行处理。基本的代码如下:
java 代码
-
- FileItemFactory factory = new DiskFileItemFactory();
-
- ServletFileUpload upload = new ServletFileUpload(factory);
- upload.setHeaderEncoding("GBK");
-
- List items = upload.parseRequest(request);
这段代码相对比较固定,也可以自己再把它封装一下。
List中的FileItem对象,就是post过来的form中的所有对象。可以通过FileItem的isFormField()来判断这个对象是一个普通的Field还是上传附件的field.
FileItem有write方法可以直接把上传过来的数据写入到一个文件当中,操作很方便。
值得说明一下的就是中文的处理。其实很简单,上面的代码也提到了一部分,就是
upload.setHeaderEncoding("GBK");//设置编码格式
然后在读取FileItem的内容时,同样也要设置编码格式:
java 代码
其中item是FileItem的实例。
通过这两个地方的设置,就可以解决中文的问题了。
分享到:
相关推荐
【使用commons-fileupload上传文件】 Apache Commons FileUpload是Apache组织的一个子项目,专注于处理HTTP文件上传。这个组件提供了一个简洁的API,使得开发者能够轻松地在Java应用中处理由浏览器发送的多部分...
本篇将详细讲解如何使用Commons FileUpload来实现文件上传的功能。 首先,理解HTTP协议中的多部分数据是至关重要的。在HTML表单提交文件时,通常会使用`enctype="multipart/form-data"`属性,此时,数据会被分割成...
- **安全性**:限制上传文件的类型和大小,避免上传恶意文件。 - **性能优化**:使用缓冲区进行文件读写,减少I/O操作对系统的影响。 - **用户体验**:提供上传进度显示,让用户了解上传状态。 - **错误处理**:...
apache commons.fileupload上传组件在上传文件时,在调用parseRequest方法时,先将输入流上传到服务器临时目录,在之后的文件处理过程中,再将临时目录下保存的文件复制到指定的目录,多了一道转储步骤。本实现抽取...
标题"fileupload commons-io上传文件"指的是使用Commons IO和FileUpload库实现文件上传功能。在Java Web开发中,通常使用Servlet API来接收HTTP请求。但是,Servlet API本身并不直接支持多部分数据的解析,这时就...
在本文中,我们将深入探讨如何使用Apache Commons FileUpload组件来实现文件上传功能。Apache Commons FileUpload是一个用于处理HTTP请求中的多部分数据的Java库,它使得在Servlet或JSP应用中处理文件上传变得简单易...
1. 安全性:确保验证上传文件的类型和大小,防止恶意文件上传。 2. 异常处理:捕获并处理解析、写入文件时可能出现的异常。 3. 性能优化:合理设置内存阈值,避免大文件一次性加载到内存。 4. 文件命名:避免使用...
本示例将详细介绍如何使用`commons-fileupload`和`commons-io`这两个库来实现一个简单的文件上传功能。 首先,我们需要引入`commons-fileupload`和`commons-io`的依赖。在Maven项目中,可以在`pom.xml`文件中添加...
该库提供了解析请求、存储上传文件和处理异常的能力。 **二、基本原理** 文件上传涉及到客户端和服务器之间的交互。用户通过HTML表单选择文件后,浏览器将文件封装成多部分数据,发送到服务器。FileUpload库负责...
以上就是关于`commons-fileupload`文件上传库的简要介绍,以及如何使用它来实现图片上传功能。这个库极大地简化了Java Web应用程序中文件上传的复杂性,使得开发者可以专注于业务逻辑,而不是底层的文件处理细节。
在使用`commons-fileupload`时,可以通过以下步骤来确保正确解码: - 创建` DiskFileItemFactory `对象,并设置字符编码,例如设置为UTF-8: ```java DiskFileItemFactory factory = new DiskFileItemFactory();...
Apache Commons FileUpload 是一个用于处理 HTTP 请求中多部分(multipart)数据的 Java 库,尤其适合上传文件。在本文中,我们将深入探讨如何利用该库实现多个文件的上传功能。 一、准备工作 在使用 Apache ...
它们通常与FileUpload一起使用,因为文件上传涉及到输入输出流的处理以及对上传文件的一些操作,这些功能在这两个库中都有提供。 Apache Commons FileUpload的工作原理主要基于Servlet规范,它能够解析HTTP请求中的...
本文将详细介绍如何使用 Commons-FileUpload 实现文件的上传和下载功能。 #### 一、环境搭建与依赖引入 1. **Maven 依赖**: - 在项目的 `pom.xml` 文件中添加 Commons-FileUpload 和 Commons-Io 的依赖。 ```...
在你的Action类(如UploadAction)中,你可以使用Commons-Fileupload库来解析请求并保存文件。首先,你需要导入必要的库,并创建一个DiskFileItemFactory和ServletFileUpload对象: ```java import org.apache....
1. 创建一个`DiskFileItemFactory`对象,它定义了临时存储上传文件的策略。 2. 使用`DiskFileItemFactory`创建一个`ServletFileUpload`实例,设置最大上传大小等配置。 3. 使用`ServletFileUpload.parseRequest...
它负责解析请求并创建`FileItem`实例,然后你可以遍历这些实例来获取上传文件的信息。 4. **文件大小限制**:可以设置最大上传文件大小和整个请求的总大小限制。这可以通过`ServletFileUpload`的构造函数或`...
标题“org.apache.commons.fileupload 文件上传至数据库”指的是使用Apache Commons FileUpload库将用户上传的文件存储到数据库中的技术。Apache Commons FileUpload是Apache软件基金会的一个开源项目,它提供了一个...
使用Commons FileUpload,开发者可以轻松地处理多个文件上传,同时检查文件大小,限制上传类型,以及进行错误处理。这个组件支持流式处理,这意味着它不需要一次性将整个文件加载到内存中,这对于处理大文件至关重要...