`
foryougeljh
  • 浏览: 116403 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

FileUpload组件

 
阅读更多

利用apache的fileupload组件实现文件的上传
1、可以实现一个或多个文件的上传,也可以接收普通的form表单数据。
2、简单测试了一下,对内存的占用还是可以忍受的,而且速度也可以。偶尔会导致内存使用的上升而且不会下降,长时间后是否会降下来还没有测试。

关键点:
1、提交文件上传的form的method属性为post,enctype属性为multipart/form-data。
2、input标签需要有name属性,否则取不到内容。

Java代码:


packageorg.xxm;

importjava.io.BufferedInputStream;

importjava.io.BufferedOutputStream;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.util.Iterator;

importjava.util.List;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importdareway.org.apache.commons.fileupload.FileItem;

importdareway.org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;

importdareway.org.apache.commons.fileupload.disk.DiskFileItemFactory;

importdareway.org.apache.commons.fileupload.servlet.ServletFileUpload;

importdareway.org.apache.commons.fileupload.util.Streams;

/**

*@authorxuxiaoming

*2009-03-19

*以tomcat6.0为服务器

*/

publicclassUploadFileServletextendsHttpServlet{

publicvoiddoGet(HttpServletRequestreq,

HttpServletResponseres){

return;

}

publicvoiddoPost(HttpServletRequestreq,

HttpServletResponseres)throwsIOException{

/**

*form中的enctype必须是multipart/...

*组件提供方法检测form表单的enctype属性

*在isMultipartContent方法中同时检测了是否是post提交

*如果不是post提交则返回false

*/

if(ServletFileUpload.isMultipartContent(req)){

req.setCharacterEncoding("utf-8");

DiskFileItemFactoryfactory=newDiskFileItemFactory();

/**

*临时文件存储路径要真实存在

*/

factory.setRepository(newFile("../webapps/fileupload/tmp"));

//内存最大占用

factory.setSizeThreshold(1024000);

ServletFileUploadsfu=newServletFileUpload(factory);

//单个文件最大值byte

sfu.setFileSizeMax(102400000);

//所有上传文件的总和最大值byte

sfu.setSizeMax(204800000);

Listitems=null;

try{

items=sfu.parseRequest(req);

}catch(SizeLimitExceededExceptione){

System.out.println("sizelimitexception!");

}catch(Exceptione){

e.printStackTrace();

}

Iteratoriter=items==null?null:items.iterator();

while(iter!=null&&iter.hasNext()){

FileItemitem=(FileItem)iter.next();//简单的表单域

if(item.isFormField()){

System.out.print("formfield:");

System.out.print(item.getFieldName()+"");

System.out.print(item.getString());

}

//文件域

elseif(!item.isFormField()){

System.out.println("clientname:"+item.getName());

StringfileName=

item.getName().substring(item.getName().lastIndexOf("//"));

BufferedInputStreamin=

newBufferedInputStream(item.getInputStream());

//文件存储在工程的upload目录下,这个目录也得存在

BufferedOutputStreamout=newBufferedOutputStream(

newFileOutputStream(newFile("../webapps/fileupload/upload/"+fileName)));

Streams.copy(in,out,true);

}

}

}else{

System.out.println("enctypeerror!");

}

}

}

JAVA IO流 实现文件下载

try {
// path是指欲下载的文件的路径。
File file = new File(path);
// 取得文件名。
String filename = file.getName();
// 取得文件的后缀名。
String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();

// 以流的形式下载文件。
InputStream fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
response.addHeader("Content-Length", "" + file.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException ex) {
ex.printStackTrace();
}

分享到:
评论

相关推荐

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

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

    使用FileUpload组件实现上传功能

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

    fileUpload组件所需jar包

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

    commons-fileUpload组件

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

    FileUpload组件使用方法

    ### FileUpload组件使用方法详解 #### 一、简介 FileUpload组件是Apache Commons项目下的一个子项目,专门用于处理HTTP POST请求中的文件上传问题。它能够解析来自客户端的多部分请求数据流,并将它们转换为一种...

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

    其中,`&lt;p:fileUpload&gt;`组件是用于实现文件上传功能的一个重要元素。本篇文章将深入探讨如何使用PrimeFaces的`&lt;p:fileUpload&gt;`组件在JSF应用中实现实时、便捷的文件上传。 首先,让我们了解`&lt;p:fileUpload&gt;`的基本...

    FileUpload组件的jar包和源码

    在Web开发中,用户可能需要上传图片、文档等文件,FileUpload组件提供了便捷的API,使得开发者可以轻松地处理这些复杂的文件上传操作。这个压缩包包含的是FileUpload的jar包和源码,版本为1.3。 **1. 文件上传基础*...

    commons-fileupload组件上传问题

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

    commons-fileupload组件和commons-io组件

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

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

    ### Common-fileupload组件实现文件上传 #### 一、概述 在现代Web开发中,文件上传是一项常见的需求。尤其是在Java Web应用程序中,实现文件上传功能变得越来越简单,这得益于丰富的开源库支持。Common-fileupload...

    FileUpload组件使用方法.docx

    本文将详细介绍如何使用FileUpload组件来实现在Servlet中的文件上传功能。 首先,导入必要的库,包括Servlet相关的API以及Commons FileUpload的依赖。在Java代码中,你需要在类路径下包含`commons-fileupload`和`...

    FileUpload组件使用方法.pdf

    【Apache Commons FileUpload组件使用详解】 Apache Commons FileUpload 是一个用于处理HTTP请求中的多部分数据(通常用于文件上传)的Java库。它是Apache Commons项目的一部分,提供了一种简单而灵活的方式来处理...

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

    【基于commons-fileupload组件的上传下载】是一种在J2EE环境下处理文件上传和下载功能的技术。这个组件是Apache Commons项目的一部分,提供了强大的文件上传能力,适用于JSP和Servlet应用程序。以下将详细介绍如何...

    实用commons-fileUpload组件上传文件

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

    fileupload组件

    "fileupload组件"就是专为实现这一目的而设计的,它整合了两个关键库:Apache Commons IO和Apache Commons FileUpload。这两个库都是Java开发中的重要工具,为文件操作提供了强大的支持。 Apache Commons IO库是一...

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

    Apache Commons FileUpload组件是处理这种需求的一个强大工具。本文将详细介绍如何利用这个组件实现文件上传,并通过一个简单的实例来说明。 Apache Commons FileUpload组件是Apache Commons项目的一部分,它为...

    JSP-文件图片上传-fileupload组件-commons-upload

    该上传的实现使用到了apache公司的fileupload组件。通过“上传页面”把上传路径提交到upload.jsp页面进行处理,然后把照片文件上传并保存到服务器上。处理代码如下: (); ServletFileUpload upload = new ...

    commons-fileupload上传组件

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

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

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

Global site tag (gtag.js) - Google Analytics