最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

利用apache的fileupload组件实现文件的上传

来源:动视网 责编:小OO 时间:2025-10-04 08:09:51
文档

利用apache的fileupload组件实现文件的上传

利用apache的fileupload组件实现文件的上传1、可以实现一个或多个文件的上传,也可以接收普通的form表单数据。2、简单测试了一下,对内存的占用还是可以忍受的,而且速度也可以。偶尔会导致内存使用的上升而且不会下降,长时间后是否会降下来还没有测试。关键点:1、提交文件上传的form的method属性为post,enctype属性为multipart/form-data。2、input标签需要有name属性,否则取不到内容。看看servlet的实现,注释已经很详细了:Java代码1.p
推荐度:
导读利用apache的fileupload组件实现文件的上传1、可以实现一个或多个文件的上传,也可以接收普通的form表单数据。2、简单测试了一下,对内存的占用还是可以忍受的,而且速度也可以。偶尔会导致内存使用的上升而且不会下降,长时间后是否会降下来还没有测试。关键点:1、提交文件上传的form的method属性为post,enctype属性为multipart/form-data。2、input标签需要有name属性,否则取不到内容。看看servlet的实现,注释已经很详细了:Java代码1.p


利用apache的fileupload组件实现文件的上传

1、可以实现一个或多个文件的上传,也可以接收普通的form表单数据。

2、简单测试了一下,对内存的占用还是可以忍受的,而且速度也可以。偶尔会导致内存使用的上升而且不会下降,长时间后是否会降下来还没有测试。

关键点:

1、提交文件上传的form的method属性为post,enctype属性为multipart/form-data。

2、input标签需要有name属性,否则取不到内容。

看看servlet的实现,注释已经很详细了:

Java代码

1.package org.xxm;

2.

3.import java.io.BufferedInputStream;

4.import java.io.BufferedOutputStream;

5.import java.io.File;

6.import java.io.FileOutputStream;

7.import java.io.IOException;

8.import java.util.Iterator;

9.import java.util.List;

10.

11.import javax.servlet.http.HttpServlet;

12.import javax.servlet.http.HttpServletRequest;

13.import javax.servlet.http.HttpServletResponse;

14.

15.import dareway.org.apache.commons.fileupload.FileItem;

16.import dareway.org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;

17.import dareway.org.apache.commons.fileupload.disk.DiskFileItemFactory;

18.import dareway.org.apache.commons.fileupload.servlet.ServletFileUpload;

19.import dareway.org.apache.commons.fileupload.util.Streams;

20.

21./**

22. * @author xuxiaoming

23. * 2009-03-19

24. * 以tomcat6.0为服务器

25. */

26.public class UploadFileServlet extends HttpServlet {

27. public void doGet(HttpServletRequest req,

28. HttpServletResponse res) {

29. return;

30. }

31.

32. public void doPost(HttpServletRequest req,

33. HttpServletResponse res) throws IOException {

34. /**

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

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

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

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

39. */

40. if(ServletFileUpload.isMultipartContent(req)) {

41. req.setCharacterEncoding("utf-8");

42. DiskFileItemFactory factory = new DiskFileItemFactory();

43. /**

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

45. */

46. factory.setRepository(new File("../webapps/fileupload/tmp"));

47. //内存最大占用

48. factory.setSizeThreshold(1024000);

49. ServletFileUpload sfu = new ServletFileUpload(factory);

50. //单个文件最大值byte

51. sfu.setFileSizeMax(102400000);

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

53. sfu.setSizeMax(204800000);

54. List items = null;

55. try {

56. items = sfu.

parseRequest(req);

57. } catch (SizeLimitExceededException e) {

58. System.out.println("size limit exception!");

59. } catch(Exception e) {

60. e.printStackTrace();

61. }

62.

63. Iterator iter = items==null?null:items.iterator();

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

65. FileItem item = (FileItem)iter.next();

66. //简单的表单域

67. if(item.isFormField()) {

68. System.out.print("form field:");

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

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

71. }

72. //文件域

73. else if(!item.isFormField()) {

74. System.out.println("client name:" + item.getName());

75. String fileName = item.getName().substring(item.getName().lastIndexOf("\\\\"));

76. BufferedInputStream in = new BufferedInputStream(item.getInputStream());

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

78. BufferedOutputStream out = new BufferedOutputStream(

79. new FileOutputStream(new File("../webapps/fileupload/upload/" + fileName)));

80. Streams.copy(in, out, true);

81. }

82. }

83. } else {

84. System.out.println("enctype error!");

85. }

86. }

87.}

package org.xxm;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Iterator;

import java.util.List;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import dareway.org.apache.commons.fileupload.FileItem;

import dareway.org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;

import dareway.org.apache.commons.fileupload.disk.DiskFileItemFactory;

import dareway.org.apache.commons.fileupload.servlet.ServletFileUpload;

import dareway.org.apache.commons.fileupload.util.Streams;

/**

* @author xuxiaoming

* 2009-03-19

* 以tomcat6.0为服务器

*/

public class UploadFileServlet extends HttpServlet {

public void doGet(HttpServletRequest req,

HttpServletResponse res) {

return;

}

public void doPost(HttpServletRequest req,

HttpServletResponse res) throws IOException {

/**

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

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

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

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

*/

if(ServletFileUpload.isMultipartContent(req)) {

req.setCh

aracterEncoding("utf-8");

DiskFileItemFactory factory = new DiskFileItemFactory();

/**

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

*/

factory.setRepository(new File("../webapps/fileupload/tmp"));

//内存最大占用

factory.setSizeThreshold(1024000);

ServletFileUpload sfu = new ServletFileUpload(factory);

//单个文件最大值byte

sfu.setFileSizeMax(102400000);

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

sfu.setSizeMax(204800000);

List items = null;

try {

items = sfu.parseRequest(req);

} catch (SizeLimitExceededException e) {

System.out.println("size limit exception!");

} catch(Exception e) {

e.printStackTrace();

}

Iterator iter = items==null?null:items.iterator();

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

FileItem item = (FileItem)iter.next();

//简单的表单域

if(item.isFormField()) {

System.out.print("form field:");

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

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

}

//文件域

else if(!item.isFormField()) {

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

String fileName = item.getName().substring(item.getName().lastIndexOf("\\\\"));

BufferedInputStream in = new BufferedInputStream(item.getInputStream());

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

BufferedOutputStream out = new BufferedOutputStream(

new FileOutputStream(new File("../webapps/fileupload/upload/" + fileName)));

Streams.copy(in, out, true);

}

}

} else {

System.out.println("enctype error!");

}

}

}

因为使用tomcat做得服务器,所以里面的路径都是以tomcat为基础来写得,具体情况需要修改。

附件是一个做好的例子,可以直接部署。

下次会以这个为基础搞一个ajax式的文件上传。

文档

利用apache的fileupload组件实现文件的上传

利用apache的fileupload组件实现文件的上传1、可以实现一个或多个文件的上传,也可以接收普通的form表单数据。2、简单测试了一下,对内存的占用还是可以忍受的,而且速度也可以。偶尔会导致内存使用的上升而且不会下降,长时间后是否会降下来还没有测试。关键点:1、提交文件上传的form的method属性为post,enctype属性为multipart/form-data。2、input标签需要有name属性,否则取不到内容。看看servlet的实现,注释已经很详细了:Java代码1.p
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top