(二)手动采用fileupload组建进行文件上传
upload2.jsp
1
<%@ page language="java" contentType="text/html; charset=GB18030"
2
pageEncoding="GB18030"%>
3
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4
<html>
5
<head>
6
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
7
<title>Insert title here</title>
8
</head>
9
<body>
10
<form action="/MyStruts2/UploadServlet" method="post" enctype="multipart/form-data">
11
username:
12
<input type="text" name="username">
13
<br>
14
password:
15
<input type="password" name="password">
16
<br>
17
file1:
18
<input type="file" name="file1">
19
<br>
20
file2:
21
<input type="file" name="file2">
22
<br>
23
<input type="submit" value=" submit ">
24
</form>
25
</body>
26
</html>
web.xml中的配置
<servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>com.test.servlet.UploadServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/UploadServlet</url-pattern>
</servlet-mapping>
UploadServle.java
1
package com.test.servlet;
2
3
import java.io.File;
4
import java.io.FileOutputStream;
5
import java.io.IOException;
6
import java.io.InputStream;
7
import java.io.OutputStream;
8
import java.util.List;
9
10
import javax.servlet.ServletException;
11
import javax.servlet.http.HttpServlet;
12
import javax.servlet.http.HttpServletRequest;
13
import javax.servlet.http.HttpServletResponse;
14
15
import org.apache.commons.fileupload.FileItem;
16
import org.apache.commons.fileupload.FileUploadException;
17
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
18
import org.apache.commons.fileupload.servlet.ServletFileUpload;
19
20
@SuppressWarnings("serial")
21
public class UploadServlet extends HttpServlet {
22
@SuppressWarnings( { "unchecked", "deprecation" })
23
public void doPost(HttpServletRequest request, HttpServletResponse response)
24
throws ServletException, IOException {
25
26
DiskFileItemFactory factory = new DiskFileItemFactory();
27
28
String path = request.getRealPath("/upload");
29
30
factory.setRepository(new File(path));
31
32
factory.setSizeThreshold(1024 * 1024);
33
34
ServletFileUpload upload = new ServletFileUpload(factory);
35
36
try {
37
List<FileItem> list = upload.parseRequest(request);
38
39
for (FileItem item : list) {
40
if (item.isFormField()) {
41
String name = item.getFieldName();
42
43
String value = item.getString("gbk");
44
45
System.out.println(name);
46
47
request.setAttribute(name, value);
48
} else {
49
String name = item.getFieldName();
50
51
String value = item.getName();
52
53
int start = value.lastIndexOf("\\");
54
55
String fileName = value.substring(start + 1);
56
57
request.setAttribute(name, fileName);
58
59
item.write(new File(path, fileName));
60
61
OutputStream os = new FileOutputStream(new File(path,
62
fileName));
63
64
InputStream is = item.getInputStream();
65
66
byte[] buffer = new byte[400];
67
68
int length = 0;
69
70
while ((length = is.read(buffer)) > 0) {
71
os.write(buffer, 0, length);
72
}
73
74
os.close();
75
76
is.close();
77
78
}
79
}
80
}
81
82
catch (Exception ex) {
83
ex.printStackTrace();
84
}
85
request.getRequestDispatcher("upload/result2.jsp").forward(request,
86
response);
87
}
88
89
}
结果:


分享到:
相关推荐
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。
总结起来,使用Struts实现文件上传下载涉及前端表单设计、后端处理逻辑、文件存储策略以及安全控制等多个方面。在实践中,我们还需要考虑到性能优化和用户体验提升,例如使用异步上传、进度条展示等技术。
需求 1.能够对多个文件进行上传(可以选择上传文件个...提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载 随意文件 java Struts2 单例 配置 动态读取 李顺利
Struts2提供了完善的文件上传支持,让我们来详细探讨如何在Struts2中实现多文件上传。 首先,我们需要在Struts2的配置文件(struts.xml)中启用文件上传的支持。这通常涉及到添加`<constant>`标签来设置`struts....
下面将详细阐述如何使用Struts2来实现文件上传功能。 1. **Struts2文件上传组件** Struts2框架集成了一个名为`struts2-convention-plugin`的插件,它提供了文件上传的支持。主要依赖于`Commons FileUpload`和`...
本项目实现了使用Struts2进行文件批量上传的功能,这涉及到几个关键的技术点,包括文件上传组件的选择、前端表单设计、后端处理逻辑以及存储策略。 1. **文件上传组件**:在Struts2中,我们通常使用`Commons ...
结合Struts2,一个流行的Java Web框架,可以构建出高效、用户友好的文件上传功能。下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用...
首先,要实现Struts2的文件上传,必须引入必要的依赖库。主要需要两个Apache Commons库:`commons-fileupload-1.2.2.jar`和`commons-io-2.0.1.jar`。这两个库提供了文件上传的基础功能,使得Struts2能够处理`...
在这个“Struts2实现文件上传”的主题中,我们将深入探讨如何利用Struts2框架来实现在Web应用中的文件上传功能。 首先,我们注意到一个细节描述:“private String uploadContextType;应更正为private String ...
在Struts2框架中实现文件上传功能是一项常见的任务,这通常涉及到用户通过表单提交文件,服务器端接收并处理这些文件。在这个场景中,我们将探讨如何使用Struts2来实现这一功能。 首先,你需要在项目中引入Struts2...
在Struts2中,文件上传主要依赖于`org.apache.struts2.components.FileUpload`组件,这个组件是基于Commons FileUpload库实现的,它能够处理multipart/form-data类型的HTTP请求,这是文件上传所必需的格式。...
这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件到服务器。在Struts2中,这通常通过表单实现,表单包含一个`<input type="file">`...
通过以上步骤,你可以实现一个基于Struts2和Hibernate的文件上传与动态下载系统。这个系统能够处理用户上传的文件,将其保存到服务器,同时提供动态下载功能,允许用户根据需要下载文件。在实际开发中,还需要考虑...
在处理文件上传时,Struts2提供了便捷的API和配置方式,使得开发人员能够轻松实现多文件上传的功能。下面将详细阐述如何使用Struts2来实现多个文件的上传。 首先,理解文件上传的基本原理。在HTTP协议中,文件上传...
Struts 2 文件上传是基于 Apache Commons FileUpload 组件实现的,这个组件处理 HTTP 请求中的多部分数据,将上传的文件保存到...通过这种方式,Struts 2 提供了一种简单、直观的方式来处理 Web 应用中的文件上传功能。
下面将详细介绍Struts 实现文件上传的相关知识点。 ### 1. Struts 框架概述 Struts 是Apache软件基金会下的一个开源项目,其主要目标是提供一个可扩展且易于维护的架构,用于构建企业级的Java Web应用。它通过分离...
Struts2框架是Java Web开发中的一个流行MVC(Model-View-Controller)框架,它提供了丰富的功能,包括处理表单提交、文件上传等。在Struts2中,文件上传是一个常见的需求,可以帮助用户从客户端上传文件到服务器。...
Struts1和Struts2是两个非常著名的Java Web框架,它们都提供了处理文件上传和下载的功能,但实现方式有所不同。本文将深入探讨这两个框架在文件操作方面的具体实现。 首先,让我们了解一下Struts1中的文件上传功能...
综上所述,Struts1中的文件上传功能实现涉及到多个核心组件和技术点的综合运用。开发者需要对Struts1框架有深入的理解,并熟练掌握相关API的使用方法。此外,在实际开发过程中还需要注意安全性问题,比如防止恶意...
在本文中,我们将深入探讨如何使用ExtJS 4与Struts2框架实现文件上传功能。ExtJS是一个强大的JavaScript库,提供了丰富的用户界面组件,而Struts2是Java Web开发中的一个MVC框架,用于处理后端业务逻辑。下面,我们...