`

servlet使用fileupload组件实现文件上传

阅读更多
需要的库:
http://commons.apache.org/fileupload/
http://commons.apache.org/io/

下载后解压zip 包,将commons-fileupload-1.3.x.jar和commons-io-2.x.jar 复制到t项目的WEB-INF/lib下。

文件上传的过程:
1).以multipart/form-data编码的POST请求向Servlet提交;
2).Servlet通过ServletFileUpload解析quest,并保存上传文件到temp目录;
3).再以IO方式把temp文件写到upload目录;

一、表单页面upload.jsp:
<!--如果不提供enctype会怎么样?→_→-->
<form action="UploadServlet" method="post" enctype="multipart/form-data">
  <input type="text" name="username"><br>
  <input type="file" name="file1"><br>
  <input type="file" name="file2"><br>
  <input type="submit" value="submit">
</form>


二、处理表单的Servlet—UploadServlet
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet
{
	@Override
	@SuppressWarnings("deprecation")
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException
	{
		//先在根目录下建两个文件
		String uploadPath = req.getRealPath("/upload");
		String tempPath = req.getRealPath("/temp");
		try
		{
			//创建一个基于硬盘的FileItem工厂
			DiskFileItemFactory factory = new DiskFileItemFactory();
			//设置向硬盘写数据时所用的缓冲区的大小,默认为2K
			factory.setSizeThreshold(10 * 1024);  
			//设置临时目录
			factory.setRepository(new File(tempPath));

			//创建一个文件上传处理器
			ServletFileUpload upload = new ServletFileUpload(factory);
			//限制上传文件大小
			upload.setSizeMax(1024 * 1024);		
			//解决文件名中文乱码
			upload.setHeaderEncoding("utf-8");  	
			
			//解析reqest
			//这一步文件已经上传到临时目录了,文件后缀为tmp
			List<FileItem> items = upload.parseRequest(req);  
			
			for (FileItem item : items)
			{			
				if (item.isFormField())
				{
					//处理普通表单域
					String fieldname = item.getFieldName();
					String value = item.getString();
					
					req.setAttribute(fieldname,value);				
				}
				else
				{
					//处理上传文件
					String filename = item.getName();  
					int index = filename.lastIndexOf("//");
					filename = filename.substring(index + 1, filename.length());
					
					if (filename.equals(""))
						return;

					File uploadFile = new File(uploadPath + "/" + filename);
	
					//简单但不够灵活
					//item.write(uploadFile);
					
					//可以自定义文件上传进度
					InputStream is = item.getInputStream();
					OutputStream os = new FileOutputStream(uploadFile);
					byte[] buff = new byte[1024];
					for (int length = 0; -1 != (length = is.read(buff));)
					{
						os.write(buff, 0, length);
					}
					
					req.setAttribute(item.getFieldName(),filename);
				}
			}
			
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		
		req.getRequestDispatcher("uploadresult.jsp").forward(req,resp);
	}
	
}


该Servlet在Web.xml中其配置为:
<servlet>  
    <servlet-name>upload</servlet-name>  
    <servlet-class>UploadServlet</servlet-class>  
</servlet>  
  
<servlet-mapping>  
    <servlet-name>upload</servlet-name>  
    <url-pattern>/upload</url-pattern>  
 </servlet-mapping>  


结果页面uploadresult.jsp
<body>
    username:${requestScope.username }<br>
    filename1:${requestScope.file1 }<br>
    filename2:${requestScope.file2 }<br>
</body>


参考:
http://blog.csdn.net/xiaoyousifang/article/details/5651642
分享到:
评论

相关推荐

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

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

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

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

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

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

    FileUpload组件

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

    jsp+servlet+fileupload文件上传

    "jsp+servlet+fileupload文件上传" 这个标题表明这是一个关于使用Java Web技术进行文件上传的教程。JSP (JavaServer Pages) 是一种动态网页技术,Servlet是Java EE中的一个核心组件,常用于处理HTTP请求。FileUpload...

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

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

    fileUpload组件所需jar包

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

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

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

    实用commons-fileUpload组件上传文件

    Apache Commons FileUpload是Java平台上的一个非常实用的文件上传组件,它使得在Servlet或JSP应用中处理文件上传变得简单易行。这个组件基于HTTP协议的多部分请求(Multipart Request)来处理文件上传,是Java Web...

    FileUpload组件使用方法

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

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

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

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

    以下将详细介绍如何使用commons-fileupload组件实现文件上传和下载。 首先,你需要在项目中引入必要的依赖库。如【描述】中所述,需要导入`javacommons-fileupload-1.2.1.jar`和`commons-io-1.4.jar`两个文件,这两...

    利用Common-fileupload封装的文件上传组件...附上源码.

    首先,我们来看一下标题:“利用Common-fileupload封装的文件上传组件...附上源码”。这表明我们将讨论如何使用这个库来创建一个文件上传系统,并且提供有源码可供参考。通过`Common-fileupload`,我们可以实现用户...

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

    **借助Commons FileUpload组件实现文件上传** Apache Commons FileUpload组件简化了文件上传的处理过程。首先,你需要在项目中引入两个JAR包:`commons-fileupload.jar`和`commons-io.jar`。然后,在Servlet中,你...

    commons-fileupload实现文件上传下载

    ### Commons-FileUpload 实现文件上传下载 #### 知识点概述 Commons-FileUpload 是 Apache 提供的一个用于处理 HTTP 文件上传的组件。它基于 Servlet 规范,并且能够解析来自 `multipart/form-data` 编码类型的 ...

    JSP使用Common FileUpload组件实现文件上传及限制上传类型实例代码

    使用Common FileUpload组件能够方便地实现文件上传功能,并且可以对上传的文件类型进行限制,确保上传的文件符合特定要求。本实例将指导如何使用Common FileUpload组件在JSP环境中实现文件上传及限制文件类型的功能...

    commons-fileupload组件上传问题

    在IT行业中,文件上传是Web应用中常见的功能之一,Apache Commons FileUpload组件是Java领域处理文件上传的标准库。本文将详细解析"commons-fileupload组件上传问题",并结合提供的资源来探讨如何解决这类问题。 ...

    FileUpload组件使用方法.pdf

    【Apache Commons FileUpload组件使用详解】 ...通过以上步骤,你可以成功地使用Apache Commons FileUpload组件在Java Web应用中实现文件上传功能。记得在实际项目中,根据具体需求进行相应的调整和优化。

Global site tag (gtag.js) - Google Analytics