1. <html>
2. <head>
3. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
4. <title>File upload</title>
5. </head>
6. <body>
7. <form name="myform" action="demo2.jsp" method="post"
8. enctype="multipart/form-data">
9. File1:<br>
10. <input type="file" name="myfile"><br>
11. File2:<br>
12. <input type="file" name="myfile"><br>
13. <br>
14. <input type="submit" name="submit" value="Commit">
15. </form>
16. </body>
17. </html>
1. package com.zj.sample;
2.
3. import java.io.File;
4. import java.io.IOException;
5. import java.util.Iterator;
6. import java.util.List;
7.
8. import javax.servlet.ServletException;
9. import javax.servlet.http.HttpServlet;
10. import javax.servlet.http.HttpServletRequest;
11. import javax.servlet.http.HttpServletResponse;
12.
13. import org.apache.commons.fileupload.DiskFileUpload;
14. import org.apache.commons.fileupload.FileItem;
15. import org.apache.commons.fileupload.FileUploadException;
16. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
17. import org.apache.commons.fileupload.servlet.ServletFileUpload;
18.
19. @SuppressWarnings("serial")
20. public class Upload extends HttpServlet {
21. private String uploadPath = "D:\\temp"; // 上传文件的目录
22. private String tempPath = "d:\\temp\\buffer\\"; // 临时文件目录
23. File tempPathFile;
24.
25. @SuppressWarnings("unchecked")
26. public void doPost(HttpServletRequest request, HttpServletResponse response)
27. throws IOException, ServletException {
28.
29. String msg = "";
30. DiskFileUpload fu = new DiskFileUpload();
31. // 设置允许用户上传文件大小,单位:字节
32. // fu.setSizeMax(10000000);
33. // 设置最多只允许在内存中存储的数据,单位:字节
34. // fu.setSizeThreshold(4096);
35. // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
36. //(临时存放目录,文件上传完毕后有办法清除它吗?)
37. fu.setRepositoryPath("D:\\TEMP");
38. //开始读取上传信息
39. List fileItems = null;
40. try {
41. fileItems = fu.parseRequest(request);
42. } catch (FileUploadException e1) {
43. // TODO 自动生成 catch 块
44. e1.printStackTrace();
45. }
46. // 依次处理每个上传的文件
47. Iterator iter = fileItems.iterator();
48. while (iter.hasNext())
49. {
50. FileItem item = (FileItem) iter.next();
51. //忽略其他不是文件域的所有表单信息
52. if (!item.isFormField())
53. {
54. String name = item.getName();//获取上传的文件名
55. long size = item.getSize();//获取上传的文件大小(字节为单位)
56. if ((name == null || name.equals("")) && size == 0)
57. continue;//跳到while检查条件
58.
59. System.out.println("<tr>");
60. System.out.println("<td>" + name + "</td>");
61. System.out.println("<td>" + size + "</td>");
62.
63. //以下为文件名处理,将上传的文件保存在项目所在目录下。
64. //获取文件名字符串的长度
65. int end = name.length();
66. //返回在此字符串中最右边出现的指定子字符串的索引。
67. int begin = name.lastIndexOf("\\");
68. File savedFile = new File("c:\\TEMP", name.substring(
69. begin + 1, end));
70. try {
71. item.write(savedFile);
72. } catch (Exception e) {
73. // TODO 自动生成 catch 块
74. e.printStackTrace();
75. }
76. }
77. }
78.
79.
80. try {
81. // Create a factory for disk-based file items
82. DiskFileItemFactory factory = new DiskFileItemFactory();
83.
84. // Set factory constraints
85. factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb
86. factory.setRepository(tempPathFile);// 设置缓冲区目录
87.
88. // Create a new file upload handler
89. ServletFileUpload upload = new ServletFileUpload(factory);
90.
91. // Set overall request size constraint
92. upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
93.
94. List<FileItem> items = upload.parseRequest(request);// 得到所有的文件
95. Iterator<FileItem> i = items.iterator();
96. while (i.hasNext()) {
97. FileItem fi = (FileItem) i.next();
98. String fileName = fi.getName();
99. if (fileName != null) {
100. File fullFile = new File(fi.getName());
101. File savedFile = new File(uploadPath, fullFile.getName());
102. fi.write(savedFile);
103. }
104. }
105. System.out.print("upload succeed");
106. } catch (Exception e) {
107. // 可以跳转出错页面
108. e.printStackTrace();
109. }
110. }
111.
112. public void init() throws ServletException {
113. File uploadFile = new File(uploadPath);
114. if (!uploadFile.exists()) {
115. uploadFile.mkdirs();
116. }
117. File tempPathFile = new File(tempPath);
118. if (!tempPathFile.exists()) {
119. tempPathFile.mkdirs();
120. }
121. }
122. }
分享到:
相关推荐
本教程将详细介绍如何利用commons-fileupload库来实现在Java Web应用中的文件上传和下载,并确保在整个过程中不会出现中文乱码问题。 1. **Apache Commons FileUpload简介** Apache Commons FileUpload是一个开源...
在实际开发中,当你需要在Web应用中实现文件上传功能时,首先会配置`commons-fileupload-1.2.1.jar`来解析请求,然后利用`commons-io-1.4.jar`处理上传后的文件,比如保存到服务器的指定目录,或者进行一些预处理...
Apache Commons FileUpload和Commons IO两个库是Java中处理文件上传的关键组件,它们为SpringMVC和MyBatis这样的框架提供了强大的支持。本篇文章将深入探讨这两个库以及它们在图片处理中的作用。 首先,`commons-...
它支持多部分解析,可以处理多个文件上传,并且具有处理大文件和内存管理的优化机制,防止服务器内存被大量文件内容消耗殆尽。此外,它还提供了解析文件项、获取文件名、文件大小等信息的功能。 `commons-io-2.4....
Apache Commons FileUpload与Apache Commons IO是Java开发中处理文件上传和I/O操作的重要库。这两个库在处理Web应用,特别是基于JSP(JavaServer Pages)的文件上传功能时,扮演着核心角色。在这个主题中,我们将...
在实际应用中,开发者通常会结合Servlet或Spring MVC等框架,利用FileUpload和IO库提供的API来构建文件上传功能。例如,使用`DiskFileItemFactory`配置临时存储路径,创建`ServletFileUpload`实例来解析请求,再通过...
本教程将详细介绍如何利用commons-fileupload实现文件上传功能,并提供一个简单的实例。 **一、Apache Commons FileUpload简介** Apache Commons FileUpload是Apache软件基金会开发的一个开源组件,专门处理HTTP...
通过结合使用Apache Commons FileUpload和Commons IO,开发者可以构建出高效且稳定的文件上传功能,同时避免了自己实现这些复杂逻辑的麻烦。这两个库的兼容性良好,广泛应用于各种Java Web项目中,是Java开发者的...
接下来,Smart Upload是另一个文件上传组件,它提供了更丰富的API和更友好的操作方式。相比于Commons FileUpload,Smart Upload提供了更强大的文件上传、预览、裁剪等特性,但目前社区支持和更新相对较少。使用Smart...
在这个教程中,我们将探讨如何在WebWork 2.2.7的Action中利用Apache Commons FileUpload库来实现文件上传功能,并处理文件流。Apache Commons FileUpload是一个强大的库,专门用于处理HTTP请求中的多部分/表单数据,...
本教程将详细介绍如何利用这两个库在Spring MVC框架中实现文件上传和下载。 `commons-fileupload`是Apache Commons的一个子项目,它专门处理HTTP协议中的多部分请求(multipart/form-data),这是HTML表单进行文件...
在本文中,我们将深入探讨如何使用Apache Commons FileUpload组件来实现文件上传功能。Apache Commons FileUpload是一个用于处理HTTP请求中的多部分数据的Java库,它使得在Servlet或JSP应用中处理文件上传变得简单易...
例如,开发者可以先使用FileUpload解析出上传的文件,然后利用Commons IO将其保存到服务器的指定位置。 这两个库的源代码文件(sources)也一同提供,这对于学习和理解其内部实现机制非常有帮助。通过阅读源码,...
在开发Java应用程序,尤其是涉及到Web应用中的文件上传功能时,`commons-fileupload.jar`和`commons-io.jar`是两个至关重要的库。这两个JAR文件分别提供了Apache Commons FileUpload和Apache Commons IO项目的功能,...
Apache Commons FileUpload是一个专门用于处理HTTP协议中的多部分表单数据的Java库,尤其适用于Web应用中的文件上传功能。在传统的HTTP请求中,表单数据通常是单一的文本,但多部分表单数据允许用户上传文件,如图片...
在使用这两个库进行文件上传时,通常先利用Commons IO处理文件I/O,然后用Commons FileUpload解析HTTP请求中的多部分数据,提取上传的文件。这样可以构建出稳定、健壮的文件上传功能,同时避免了直接处理Servlet API...
Struts2框架整合这两个库,提供了方便的文件上传Action,使得开发者无需关心底层实现细节。例如,可以创建一个继承自`org.apache.struts2.actions上传ActionSupport`的自定义Action,重写其中的`execute()`方法。在...
《Java Web文件上传:commons-fileupload-1.2.1详解》 在Java Web开发中,文件上传是一项常见的功能,用户可能需要上传图片、文档等各类文件。Apache Commons FileUpload库是一个强大的工具,用于处理HTTP协议中的...
Apache Commons FileUpload库和Commons IO库是Java中实现这一功能的重要工具。这两个库的版本分别为1.3.2和2.5,...在实际应用中,开发者需要考虑性能、安全性和用户体验等多个方面,以实现高效且安全的文件上传功能。
在本文中,我们将深入探讨如何使用JavaScript(JS)结合Apache Commons FileUpload库来实现一个带进度条的文件上传功能,并支持批量上传。这个功能在现代Web应用中非常常见,能够提供用户友好的交互体验。 首先,...