`
ttitfly
  • 浏览: 623983 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

FileUpload组件上传文件

    博客分类:
  • java
阅读更多
利用FileUpload组件上传文件,需要到apache上下载jar包
http://commons.apache.org/fileupload/
同时因为fileupload组件本身依赖apache common下的io包,所以也需要下载
http://commons.apache.org/io/

form.jsp
<form action="/fileupload/UploadServlet"  method="post" enctype="multipart/form-data">
    	username:<input type="text" name="username" /><br/>
    	password:<input type="password" name="password"/><br/>
    	file1:<input type="file" name="file1"/><br/>
    	file2:<input type="file" name="file2"/><br/>
    	<input type="submit" name="submit" value="submit"/>
    </form>



result.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
username:<%= request.getAttribute("username") %><br/>
password:<%= request.getAttribute("password") %><br/>
file1:<%= request.getAttribute("file1") %><br/>
file2:<%= request.getAttribute("file2") %><br/>



Servlet类
package com.test.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 {

	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		//创建一个工厂类
		DiskFileItemFactory factory = new DiskFileItemFactory();
		String path = request.getRealPath("/upload");
		//设置上传文件放在磁盘上的临时目录,如果上传的文件大于设置的最大值,则用该临时目录,否则用内存做临时存储
		factory.setRepository(new File(path));
		//这个参数就是上传文件临时是放在内存还是放在磁盘的文件大小设置,如果上传文件超出这个大小,则放磁盘,否则放内存
		factory.setSizeThreshold(1024*1024);
		
		//上传的关键对象
		ServletFileUpload fileuplod = new ServletFileUpload(factory);
		try {
			//解析各个表单域
			List<FileItem> list = fileuplod.parseRequest(request);
			
			for(FileItem fileItem : list){
				//Field有2种,一种是简单域,一种是file域,如果fileItem.isFormField()==true ,则代表是简单域
				if(fileItem.isFormField()){
					//获得简单域的名字
					String fieldName = fileItem.getFieldName();
					//获得简单域的值
					String fieldValue = fileItem.getString("UTF-8");
					System.out.println(fileItem.getName());
					request.setAttribute(fieldName, fieldValue);
				}else{
					//获得file域的名字
					String fieldName = fileItem.getFieldName();
					//获得file域的值,带路径,即是路径+文件名
					String value = fileItem.getName();
					//取的file域的值的名字,不带路径
					int pos = value.lastIndexOf("\\");
					String fieldValue = value.substring(pos+1);
					//获得是file文件的内容,而不是路径+文件名
					System.out.println( fileItem.getString("UTF-8") );
					request.setAttribute(fieldName, fieldValue);
					
					/*第一种方法:
					//保持文件名不变,把上传文件传到服务器上的目录
					OutputStream os = new FileOutputStream(new File(path,fieldValue));
					
					InputStream is = fileItem.getInputStream();
					byte buf[] = new byte[1024];
					int length = 0;
					while( (length = is.read(buf)) > 0 ){
						os.write(buf, 0, length);
					}
					//关闭流
					os.close();
					is.close();
					*/
					
					//第二种方法
					fileItem.write(new File(path,fieldValue));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		request.getRequestDispatcher("/result.jsp").forward(request, response);
	}

}


8
1
分享到:
评论
1 楼 aguai0 2010-05-10  
刚刚看到个同事也是像楼主这样写的

相关推荐

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

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

    实用commons-fileUpload组件上传文件

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

    使用FileUpload组件实现上传功能

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

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

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

    fileUpload文件上传组件例子

    在这个"fileUpload组件"中,前端部分可能包括以下关键知识点: 1. **事件监听**:使用JavaScript监听文件选择事件,当用户选择文件后触发相应的处理函数。 2. **文件读取API**:FileReader API用于在客户端预览、...

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

    PrimeFaces的`&lt;p:fileUpload&gt;`组件提供了这些选项,例如`maxFileSize`和`minFileSize`可以限制上传文件的大小范围,`invalidFileMessage`可以设置错误提示信息。 为了确保安全,你还需要在后台验证文件类型,避免...

    FileUpload组件

    在IT行业中,文件上传是许多应用程序的基本功能,无论是网页、移动应用还是桌面软件,都可能涉及到用户上传文件的需求。Apache组织作为开源社区的巨头之一,为开发者提供了一系列强大的工具,其中包括用于处理文件...

    FileUpload控件上传文件客户端验证格式

    综上所述,FileUpload控件的客户端验证是Web应用中必不可少的一环,它结合了JavaScript、jQuery和HTML5等技术,确保了用户上传文件的安全性和合法性。同时,服务端验证作为补充,为整个文件上传过程提供了额外的安全...

    FileUpload 文件上传组件的ASP.NET源码.rar

    FileUpload 文件上传组件的ASP.NET实例,基于主副窗口的上传程序,利用线程提升上传速度。本插件可支持多文件上传,为了提升上传体验... 解决FileUpload控件上传文件大小限制  ASP.NET中实现FileUpload多文件上传

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

    - 可以限制上传文件的大小。 - 提供了灵活的API来处理文件上传过程中的各种情况。 #### 三、安装与配置 1. **下载组件**:首先从Apache Commons官网(http://jakarta.apache.org/commons/fileupload/)下载Common-...

    commons-fileupload组件上传问题

    本文将详细解析"commons-fileupload组件上传问题",并结合提供的资源来探讨如何解决这类问题。 首先,Apache Commons FileUpload组件允许我们在Servlet环境中处理multipart/form-data类型的表单数据,这是用来上传...

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

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

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

    apache commons.fileupload上传组件在上传文件时,在调用parseRequest方法时,先将输入流上传到服务器临时目录,在之后的文件处理过程中,再将临时目录下保存的文件复制到指定的目录,多了一道转储步骤。本实现抽取...

    FileUpload_php--上传组件

    4. **格式限制**:能够设定上传文件的类型,例如仅接受图像文件(如.jpg, .png等),防止用户上传不安全或不合适的文件。 5. **大小限制**:可以设置每个文件的最大大小,避免服务器因大文件上传而承受过大的负担。...

    asp.net fileupload文件上传

    ASP.NET中的FileUpload控件是用于处理用户上传文件的核心组件,尤其在Web应用程序中,它提供了方便的文件上传功能。以下是对标题和描述中涉及的知识点的详细解释: 1. **FileUpload控件的使用**:在ASP.NET环境中,...

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

    上述配置限制了上传文件的最大大小为10MB,整个请求的最大大小为15MB,当文件大小超过5MB时才会开始写入磁盘。 现在,我们创建一个名为`FileUploadServlet`的Servlet类,该类负责处理文件上传请求。这里的关键步骤...

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

    5. **并发处理**:如果同时有多个用户上传文件,需要考虑并发控制。 在实际开发中,你还可以结合AJAX和jQuery来实现异步上传,提高用户体验。同时,了解并应用相关的WebAPI或SignalR技术,可以使你的文件上传功能...

    fileUpload组件所需jar包

    确保`enctype`属性设为`multipart/form-data`,这是上传文件所需的。 通过以上步骤,你可以实现一个基本的文件上传功能。然而,实际应用中可能还需要处理更多细节,比如进度条显示、文件预览、错误提示等。Apache ...

Global site tag (gtag.js) - Google Analytics