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

使用FileUpload组件实现文件上传

 
阅读更多

文件上传在web应用中非常普遍,要在servlet/jsp环境中实现文件上传功能非常容易,因为网上已经有许多用java开发的组件用于文件上传,本文以commons-fileupload组件为例,为servlet/jsp应用添加文件上传功能。

common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载。该组件简单易用,可实现一次上传一个或多个文件,并可限制文件大小。

下载后解压zip包,将commons-fileupload-1.0.jar复制到tomcat的webapps/你的webapp/WEB-INF/lib/下,如果目录不存在请自建目录。

新建一个servlet: Upload.java用于文件上传:

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;

public class Upload extends HttpServlet {

private String uploadPath = "C://upload//"; // 用于存放上传文件的目录
private String tempPath = "C://upload//tmp//"; // 用于存放临时文件的目录

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
}
}

当servlet收到浏览器发出的Post请求后,在doPost()方法中实现文件上传。以下是示例代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
try {
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(4096);
// 设置临时目录:
fu.setRepositoryPath(tempPath);

// 得到所有的文件:
List fileItems = fu.parseRequest(request);
Iterator i = fileItems.iterator();
// 依次处理每一个文件:
while(i.hasNext()) {
FileItem fi = (FileItem)i.next();
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
if(fileName!=null) {
// 在这里可以记录用户和文件信息
// ...
// 写入文件a.txt,你也可以从fileName中提取文件名:
fi.write(new File(uploadPath + "a.txt"));
}
}
//跳转到上传成功提示页面
}
catch(Exception e) {
// 可以跳转出错页面
}
}

如果要在配置文件中读取指定的上传文件夹,可以在init()方法中执行:

public void init() throws ServletException {
uploadPath = ....
tempPath = ....
// 文件夹不存在就自动创建:
if(!new File(uploadPath).isDirectory())
new File(uploadPath).mkdirs();
if(!new File(tempPath).isDirectory())
new File(tempPath).mkdirs();
}

编译该servlet,注意要指定classpath,确保包含commons-upload-1.0.jar和tomcat/common/lib/servlet-api.jar。

配置servlet,用记事本打开tomcat/webapps/你的webapp/WEB-INF/web.xml,没有的话新建一个。典型配置如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<servlet>
<servlet-name>Upload</servlet-name>
<servlet-class>Upload</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Upload</servlet-name>
<url-pattern>/fileupload</url-pattern>
</servlet-mapping>
</web-app>

配置好servlet后,启动tomcat,写一个简单的html测试:

<form action="fileupload" method="post"
enctype="multipart/form-data" name="form1">
<input type="file" name="file">
<input type="submit" name="Submit" value="upload">
</form>

注意action="fileupload"其中fileupload是配置servlet时指定的url-pattern。

转自:

分享到:
评论

相关推荐

    使用fileupload组件实现文件上传功能

    使用fileupload组件实现文件上传功能 FileUpload组件是Apache提供的一款文件上传组件,能够帮助我们轻松实现文件上传功能。下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两...

    使用FileUpload组件实现上传功能

    使用FileUpload组件实现上传功能,供大家一起共同分享学习。

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

    通过使用Common-fileupload组件,开发者可以轻松地在JSP环境中实现文件上传功能。该组件不仅提供了基本的文件上传功能,还支持高级特性如多文件上传、文件大小限制等。这对于提高Web应用程序的功能性和用户体验非常...

    利用commons-fileupload组件实现文件上传-实例

    通过以上步骤,我们就使用Apache Commons FileUpload组件实现了一个基本的文件上传功能。你可以根据自己的需求对这个示例进行扩展,比如添加错误处理、文件类型检查和存储优化等。参考提供的博文链接,可以获取更多...

    JSF页面,<p:fileUpload组件文件上传

    本篇文章将深入探讨如何使用PrimeFaces的`&lt;p:fileUpload&gt;`组件在JSF应用中实现实时、便捷的文件上传。 首先,让我们了解`&lt;p:fileUpload&gt;`的基本用法。在JSF页面中,你可以通过以下方式引入这个组件: ```html ...

    FileUpload组件

    在IT行业中,文件上传是许多应用程序的基本功能,无论是网页、移动应用还是桌面软件,都可能涉及到用户上传文件的...通过以上信息,开发者可以轻松集成和使用Apache FileUpload组件,实现高效且可靠的文件上传功能。

    基于commons-fileupload组件的文件上传系统

    采用apache commons 项目中的fileupload组件,实现了文件上传功能,它能够便利而简单地使得web应用程序和servlet具备高性能的文件上传能力,减小了直接操作输入输出流的系统开销。

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

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

    fileUpload组件所需jar包

    本篇将详细讲解使用FileUpload组件实现JSP文件上传所需的步骤和关键知识点。 首先,`fileUpload组件`是Apache Commons项目的一个子项目,它提供了一套API,可以方便地处理HTTP请求中的多部分数据,即文件上传。在...

    android上传文件服务器端和相关jar包(fileupload组件实现)

    android上传文件服务器端和相关jar包(fileupload组件实现),对应前面的android客户端上传文件源码(上次忘记传了),可以一次上传多个文件http://download.csdn.net/source/3062714

    Asp.net 2.0 用FileUpload 控件实现多文件上传

    要实现多文件上传,我们需要对FileUpload控件做一些扩展,因为ASP.NET 2.0原生的FileUpload控件仅支持单个文件上传。一种常见的方法是使用HTML5的`&lt;input type="file" multiple /&gt;`特性,这允许用户选择多个文件。...

    fileUpload文件上传组件例子

    本示例中的"fileUpload文件上传组件例子"提供了一个自定义实现的文件上传组件,旨在帮助开发者理解并掌握这一关键功能的实现方式。 首先,我们需要了解文件上传的基本原理。在HTML中,`&lt;input type="file"&gt;`标签...

    实用commons-fileUpload组件上传文件

    总的来说,Apache Commons FileUpload组件通过提供一套完整的API,使得处理文件上传变得标准化和易于管理。通过熟练掌握这个组件,开发者可以轻松地在Java Web应用中实现安全、高效的文件上传功能。

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

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

    commons-fileUpload组件

    标题"commons-fileUpload组件"指的是Apache Commons FileUpload,这是一个Java库,专门用于处理HTTP请求中的文件上传。它与另一个组件Apache Commons IO紧密协作,为Java应用程序提供方便、高效的文件上传功能。 ...

    FileUpload组件使用方法

    本文将详细介绍如何使用FileUpload组件来实现文件上传功能。 #### 二、准备工作 1. **下载Commons FileUpload组件包** 首先需要访问官方网站 [http://commons.apache.org](http://commons.apache.org/) 下载最新...

    FileUpload_php--上传组件

    "FileUpload_php"是一个专门为PHP开发的上传组件,其设计灵感来源于163编辑器的上传功能,旨在提供简单易用且高效的文件上传解决方案。 "FileUpload_php"组件的核心功能包括: 1. **多文件选择**:允许用户通过...

    C# .NET FileUpload 多文件上传例子

    首先,我们要知道ASP.NET中的`&lt;asp:FileUpload&gt;`控件是实现文件上传的核心组件。它可以允许用户从本地计算机选择一个或多个文件,并将这些文件上传到服务器。在多文件上传中,我们需要确保控件的`Multiple`属性设置...

Global site tag (gtag.js) - Google Analytics