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

学习使用Commons的FileUpload组件

    博客分类:
  • java
阅读更多
刚弄了一个基础的,还在学习中。。。还望前辈们多多指教

刚看到user guide,那个Watching progress还是不太懂,所以没有用上

参见http://commons.apache.org/fileupload/index.html

web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

	<servlet>
        <servlet-name>InvokerServlet</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>InvokerServlet</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>


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




upload.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>upload.htm</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=gbk">
  </head>
  
  <body>
	<form name="form" action="/servlet/com.djwl.servlet.upload" method="post" enctype="multipart/form-data">
		<br>
		请选择要上传的文件:
		<br>
		<input type="file" name="file0">
		<br>
		<input type="file" name="file1">
		<br>
		<input type="file" name="file2">
		<br>
		
		<input type="text" name="username">
		<br>
		<input type="text" name="password">
		<br>
		<input type="submit" value="确定">
	</form>

  </body>
</html>




upload.java


package com.djwl.servlet;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
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;
import org.apache.commons.lang.StringUtils;

import com.djwl.core.utils.DateUtil;
import com.djwl.core.utils.StringUtil;

public class upload extends HttpServlet {
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("gbk");
		response.setCharacterEncoding("gbk");
		response.setContentType("text/html;charset=gbk");
		
		PrintWriter out = response.getWriter();
		
		// Check that we have a file upload request
		boolean isMultipart = ServletFileUpload.isMultipartContent(request);
		
		// Create a factory for disk-based file items
		DiskFileItemFactory factory = new DiskFileItemFactory();
		// Set factory constraints
		factory.setSizeThreshold(2*1024*1024);//2MB
		String userfilepath = request.getRealPath("userfile/"+DateUtil.getCurrentDate8());
		factory.setRepository(new File(userfilepath));

		// Create a new file upload handler
		ServletFileUpload upload = new ServletFileUpload(factory);
		// Set overall request size constraint
		upload.setSizeMax(50*1024*1024);//50MB
		
		try {
			// Parse the request
			List /* FileItem */ items = upload.parseRequest(request);
			
			// Process the uploaded items
			Iterator iter = items.iterator();
			while (iter.hasNext()) {
			    FileItem item = (FileItem) iter.next();
			    if (item.isFormField()) {
				    String name = item.getFieldName();
				    String value = item.getString();
				    System.out.println(name + ":" + value);
			    } else {
			    	// Process a file upload
		    	    String fieldName = item.getFieldName();
		    	    String fileName = item.getName();
		    	    if(StringUtils.isBlank(fileName)){
		    	    	continue;
		    	    }
		    	    System.out.println(fieldName + ":" + fileName);
					String extensionName = fileName.substring(fileName.lastIndexOf("."),fileName.length());
		    	    String contentType = item.getContentType();
		    	    boolean isInMemory = item.isInMemory();
		    	    long sizeInBytes = item.getSize();
		    	    
		    	    // Process a file upload
	    	    	String url = userfilepath+StringUtil.getUUID()+extensionName;
	    	    	File uploadedFile = new File(url);
					if (!uploadedFile.exists()) {// 如果要写入的文件或目录不存在,那么试着创建要写入的目录,以便写入文件
						uploadedFile.getParentFile().mkdirs();
					}
					
	    	        item.write(uploadedFile);
	    	        
			    }
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}



1
0
分享到:
评论

相关推荐

    commons-fileUpload组件

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

    fileUpload组件所需jar包

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

    commons-fileupload上传组件

    首先,Commons FileUpload组件的核心功能是解析HTTP请求中的`multipart/form-data`内容,这是HTML表单上传文件时通常使用的编码方式。它能够识别并提取每个部分的数据,包括文件内容和其他非文件数据,如文本字段。 ...

    commons-fileupload组件和commons-io组件

    **Commons-Fileupload组件** Commons-Fileupload是Apache Commons项目的一个子项目,专门设计用于处理Servlet容器中的文件上传请求。它提供了一套API,使得开发者可以方便地解析HTTP请求中的多部分(multipart)...

    commons-fileupload组件上传问题

    通过阅读这篇博客,开发者可以更好地理解如何在Java Web应用中使用`commons-fileupload`组件实现安全、高效的文件上传功能。 总结起来,`commons-fileupload`组件是处理HTTP文件上传的利器,它简化了文件上传的流程...

    commons fileupload

    在Web开发中,尤其是在涉及到用户上传照片、文档等大文件时,FileUpload组件提供了方便、高效的解决方案。 文件上传是Web应用程序中的常见需求,它允许用户从他们的本地计算机向服务器发送文件。在HTTP协议中,文件...

    commons-fileupload-1.4-bin.zip

    《Apache Commons FileUpload组件详解》 Apache Commons FileUpload是一个用于处理HTTP请求中多部分数据的Java库,尤其在上传文件时极为有用。标题中的"commons-fileupload-1.4-bin.zip"表明这是一个包含Apache ...

    commons-fileupload-1.3.3&commons-fileupload-1.3.3架包和代码.rar

    标题中的"commons-fileupload-1.3.3&commons-fileupload-1.3.3架包和代码.rar"提到了Apache Commons FileUpload的1.3.3版本的库及其源码。Apache Commons FileUpload是一个Java库,专门用于处理HTTP协议中的多部分...

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

    四、FileUpload组件如何工作? FileUpload 组件基于 RFC1867 规范,用于处理文件上传。在客户端,浏览器按照 RFC1867 规范将用户指定的文件发送到服务器。在服务器端,网页程序按照 RFC1867 规范解析出用户发送来的...

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

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

    实用commons-fileUpload组件上传文件

    在使用Commons FileUpload组件时,首先要理解HTTP的多部分请求。当用户在表单中包含文件输入字段并提交时,浏览器会将整个表单数据以多部分/混合内容类型(multipart/form-data)的形式发送。每个部分都有自己的头部...

    commons-fileupload-1.4 jar包.rar

    Apache Commons FileUpload组件就是为了解决这一问题而设计的,它提供了一套完整的解决方案,使得开发者可以方便、高效地处理HTTP请求中的多部分数据,即文件上传。本篇文章将深入解析这个组件,帮助开发者更好地...

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

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

    commons-fileupload和commons-io的jar包

    Apache Commons FileUpload库是一个专门处理HTTP协议中的多部分请求(multipart/form-data)的组件,常用于Web应用程序中的文件上传功能。在Servlet或JSP环境中,它可以帮助开发者轻松地解析请求中的文件数据,避免...

    使用commons fileupload 和commons io jar包操作实例项目

    Apache Commons FileUpload和Commons IO库为处理文件上传提供了强大的支持。这两个库都是Apache软件基金会开发的开源组件,广泛应用于各种Java项目中。 Apache Commons FileUpload库主要用于处理HTTP协议中的多部分...

    commons-fileupload及源码

    FileUpload组件的核心功能是解析HTTP请求中的多部分数据(Multipart Form Data),这是HTML表单中用于上传文件的标准格式。它的工作原理如下: 1. **解析请求**:当用户通过HTML表单提交包含文件的请求时,服务器端...

    commons-fileupload-1.3.1.jar

    使用Apache Commons FileUpload时,开发者通常需要以下步骤: 1. 创建一个DiskFileItemFactory实例,设置磁盘缓存和大小限制。 2. 使用ServletFileUpload实例,指定DiskFileItemFactory和任何其他配置。 3. 调用...

    上传组件Commons fileUpload.jar剖析

    ### 上传组件Commons fileUpload.jar剖析 #### 一、简介 Apache Commons FileUpload 是一个用于解析`multipart/form-data`编码格式数据的Java库。这种编码格式常用于表单提交时上传文件。FileUpload能够将HTML表单...

Global site tag (gtag.js) - Google Analytics