`
zhxmyself
  • 浏览: 40691 次
  • 来自: ...
社区版块
存档分类
最新评论

用commons FileUpload实现文件上传

阅读更多
1、到www.apache.org下载相关jar文件
2、创建一个web project,将相关包引入
(1)web.xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<servlet>
		<servlet-name>UploadFileServlet</servlet-name>
		<servlet-class>com.fileupload.servlet.UploadFileServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>UploadFileServlet</servlet-name>
		<url-pattern>/UploadFileServlet/*</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

(2)index.jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>My JSP 'index.jsp' starting page</title>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<script type="text/javascript">
	    function getUpFiles(){
	        var desc = document.getElementById("desc").value;
	        alert(desc);
	    }
	</script>
	</head>

	<body>
	<%
	   String fileName = "";
	   if(request.getAttribute("fileName")!=null){
	       fileName = (String)request.getAttribute("fileName");
	       out.println(fileName+"上传成功!");
	   }
	 %>
		<form method="post" action="UploadFileServlet" name="upForm"
		enctype="multipart/form-data" onsubmit="return getUpFiles();">
			<table width="100%" border="0">
				<tbody>
					<tr>
						<td width="15%">
							文件路径:
						</td>
						<td width="85%">
							<input type="file" name="upFile" size="30px"/>
						</td>
					</tr>
					<tr>
						<td width="15%">
							文件描述:
						</td>
						<td width="85%"> 
							<textarea name="desc" rows="10" cols="50"></textarea>
						</td>
					</tr>
					<tr>
						<td>
							&nbsp;
						</td>
						<td>
							<input type="Submit" name="upBotton" value="上传"/>
						</td>
					</tr>
					<tr>
						<td>
							&nbsp;
						</td>
						<td>
							&nbsp;
						</td>
					</tr>
				</tbody>
			</table>
		</form>
	</body>
</html>


(3)UploadFileServlet 类的实现
package com.fileupload.servlet;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.RequestDispatcher;
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 UploadFileServlet extends HttpServlet {
	private static final long serialVersionUID = 56890894234786L;
	String saveFolder = "falshFolder";
	String saveTempFolder = "falshTempFolder";

    @SuppressWarnings("unchecked")
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, java.io.IOException {
        request.setCharacterEncoding("UTF-8");

        // 文件上傳部分
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        
        if (isMultipart == true) {
            try {
            	// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
            	DiskFileItemFactory factory = new DiskFileItemFactory();
            	// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
            	factory.setSizeThreshold(4096);
            	//设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录
            	factory.setRepository(new File(request.getRealPath("/")+
            			saveTempFolder));
            	// 用配置好的工厂实例化上传组件
                ServletFileUpload upload = new ServletFileUpload(factory);
                
                // 得到所有的表单域,它们目前都被当作FileItem
                List<FileItem> fileItems = upload.parseRequest(request);
                Iterator<FileItem> iter = fileItems.iterator();
                
                // 依次处理每个表单域
                while (iter.hasNext()) {
                    FileItem item = (FileItem) iter.next();
                    
                    if(item.isFormField()){
                        // 如果item是正常的表单域
                        String name = item.getFieldName();
                        String value = item.getString();
                        System.out.print("表单域名为:"+name+"表单域值为:"+value);
                    }
                    else{
                        // 如果item是文件上传表单域
                        
                        // 获得文件名及路径
                        String fileName = item.getName();
                        if (fileName != null) {
                        	//获取要上传的文件
                            File fullFile = new File(item.getName());   
                            String t_ext = fullFile.getName().substring(fullFile.getName().lastIndexOf(".") + 1);

                            // 如果文件存在则上传
                            if(fullFile.exists()){
                            	//存放文件的路径
                                String filePath = request.getRealPath("/") + saveFolder;
                                long now = System.currentTimeMillis();
                                // 根据系统时间生成上传后保存的文件名
                                String name = String.valueOf(now);
                                File fileOnServer = new File(filePath,
                                        name+"."+t_ext);
                                item.write(fileOnServer);
                                
                                System.out.println("文件"+fileOnServer.getName()+"上传成功");
                                request.setAttribute("fileName", fullFile.getName());
                            }
                        }
                    }
                }                
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("the enctype must be multipart/form-data");
        }
        

        // 返回原页
        RequestDispatcher dispatcher = request
                .getRequestDispatcher("index.jsp");
        dispatcher.forward(request, response);
        return;
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, java.io.IOException {
        doPost(request, response);
    }

}


0
0
分享到:
评论

相关推荐

    commons-fileupload实现文件上传

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

    Apache Commons fileUpload实现文件上传

    Apache Commons ...总的来说,Apache Commons FileUpload为Java开发者提供了强大的文件上传支持,简化了处理多部分表单数据的过程。了解其工作原理和使用方法,可以帮助我们更好地构建安全、高效的文件上传功能。

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

    通过以上步骤,你可以成功地使用Apache Commons FileUpload实现文件上传和下载功能,并避免中文乱码问题。在实际开发中,还可以结合Spring MVC或Struts等框架,进一步简化代码和提高代码的可维护性。

    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` 编码类型的 ...

    commons fileupload实现文件上传

    总的来说,Apache Commons FileUpload是Java Web开发中不可或缺的工具,它简化了文件上传的复杂性,使得开发者能够更专注于业务逻辑,而不用过多关心底层的文件处理细节。正确使用和配置这个库,可以在保证用户体验...

    commons-fileupload文件上传实例

    通过以上步骤,你可以使用Apache Commons FileUpload实现简单的文件上传功能。这个库提供了许多高级特性,如内存和磁盘混合存储、自定义文件保存策略等,可以根据实际项目需求进行深入学习和应用。

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

    Struts1.2和Commons-Fileupload是Java Web开发中用于实现文件上传的两个重要组件。Struts1.2是Apache的一个开源框架,主要用于构建MVC(模型-视图-控制器)架构的Web应用程序,而Commons-Fileupload则是Apache ...

    使用commons-fileupload上传文件

    通过使用`commons-fileupload`,开发者可以方便地在Java Web应用中实现文件上传功能,而无需关注底层的HTTP协议细节。这个组件提供了丰富的API,支持各种自定义选项,例如内存阈值、临时文件存储位置等,使得文件...

    commons-fileupload和smartupload实现文件上传

    在上述例子中,我们看到了使用Commons FileUpload实现文件上传的步骤: 1. 创建上传页面:HTML表单使用`enctype="multipart/form-data"`属性,指定上传文件的类型。在`&lt;input type="file"&gt;`标签中,用户可以选择要...

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

    本实现抽取了apache commons.fileupload的最基本代码,组合成一个简单的文件上传组件,对parseRequest方法进行了改进,对于文件,直接存储到指定的上传目录,加快了上传速度。使用本程序时,注意上传端的参数设置,...

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

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

    commons-fileupload文件上传实例代码

    本教程将深入讲解如何使用`commons-fileupload`库处理中文乱码问题以及实现多文件上传。 首先,`commons-fileupload`是Apache Commons项目的一个组件,专门用于处理HTTP请求中的多部分数据,即文件上传。它与...

    Apache_Commons_fileUpload实现文件上传

    ### Apache Commons fileUpload 实现文件上传 #### 一、简介 Apache Commons ...以上就是关于如何使用 Apache Commons fileUpload 实现文件上传的详细介绍。希望对正在寻找文件上传解决方案的开发者有所帮助。

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

    在创建一个基于Apache Commons FileUpload的文件上传组件时,通常会包含以下步骤: 1. 创建`DiskFileItemFactory`实例。 2. 使用工厂创建`ServletFileUpload`实例,设置大小限制。 3. 解析`HttpServletRequest`对象...

    commons fileupload用于文件上传

    在Java EE开发中,文件上传是一项常见的功能,Apache Commons FileUpload库正是为了处理这个需求而设计的。这个库提供了一套强大的API,使得在Servlet环境中处理文件上传变得简单且高效。下面将详细介绍Apache ...

    js结合commons-fileupload实现带进度条的文件上传

    在本文中,我们将深入探讨如何使用JavaScript(JS)结合Apache Commons FileUpload库来实现一个带进度条的文件上传功能,并支持批量上传。这个功能在现代Web应用中非常常见,能够提供用户友好的交互体验。 首先,...

    fileupload commons-io上传文件

    以上就是关于“fileupload commons-io上传文件”这一主题的详细说明,涵盖了Apache Commons IO和FileUpload库在文件上传中的应用,以及如何使用这两个库实现文件上传功能的基本步骤。在实际开发中,根据具体需求,还...

Global site tag (gtag.js) - Google Analytics