uploadFile.java
1
package action;
2
3
import java.io.File;
4
import java.text.DateFormat;
5
import java.text.SimpleDateFormat;
6
import java.util.Date;
7
import java.util.Random;
8
9
import javax.servlet.ServletContext;
10
11
import org.apache.commons.io.FileUtils;
12
import org.apache.struts2.util.ServletContextAware;
13
14
import com.opensymphony.xwork2.ActionSupport;
15
16
public class uploadFile extends ActionSupport implements ServletContextAware {
17
18
private static final long serialVersionUID = -5016873153441103539L;
19
20
private File doc;
21
private String fileName;
22
private String contentType;
23
24
private ServletContext context;
25
26
public void setDoc(File file) {
27
this.doc = file;
28
}
29
30
public void setDocFileName(String fileName) {
31
this.fileName = fileName;
32
}
33
34
public void setDocContentType(String contentType) {
35
this.contentType = contentType;
36
}
37
38
public void setServletContext(ServletContext context) {
39
this.context = context;
40
}
41
42
public String execute() throws Exception {
43
String targetDirectory = context.getRealPath("/upload");
44
String targetFileName = generateFileName(fileName);
45
File target = new File(targetDirectory, targetFileName);
46
47
FileUtils.copyFile(doc, target);
48
49
return SUCCESS;
50
}
51
52
private String generateFileName(String fileName) {
53
DateFormat format = new SimpleDateFormat("yyMMddHHmmss");
54
String formatDate = format.format(new Date());
55
56
int random = new Random().nextInt(10000);
57
58
int position = fileName.lastIndexOf(".");
59
String extension = fileName.substring(position);
60
61
return formatDate + random + extension;
62
}
63
}
64

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

struts.xml
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!DOCTYPE struts PUBLIC
3
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4
"http://struts.apache.org/dtds/struts-2.0.dtd">
5
<struts>
6
<package name="uploadFile" extends="struts-default">
7
<action name="uploadFile" class="action.uploadFile">
8
<result>/jsp/up.jsp</result>
9
</action>
10
</package>
11
</struts>
web.xml(Struts2的xml,非上傳的xml)
2

3

4

5

6

7

8

9

10

11

1
<?xml version="1.0" encoding="UTF-8"?>
2
<web-app version="2.4"
3
xmlns="http://java.sun.com/xml/ns/j2ee"
4
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
6
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
7
<filter>
8
<filter-name>struts2</filter-name>
9
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
10
</filter>
11
<filter-mapping>
12
<filter-name>struts2</filter-name>
13
<url-pattern>/*</url-pattern>
14
</filter-mapping>
15
</web-app>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

up.jsp(上傳成功頁面)
1
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2
<%@ taglib prefix="s" uri = "/struts-tags" %>
3
<%
4
String path = request.getContextPath();
5
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
6
%>
7
8
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
9
<html>
10
<head>
11
<base href="<%=basePath%>">
12
13
<title>My JSP 'up.jsp' starting page</title>
14
15
<meta http-equiv="pragma" content="no-cache">
16
<meta http-equiv="cache-control" content="no-cache">
17
<meta http-equiv="expires" content="0">
18
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
19
<meta http-equiv="description" content="This is my page">
20
<!--
21
<link rel="stylesheet" type="text/css" href="styles.css">
22
-->
23
24
</head>
25
26
<body>
27
<s:property value="contentType"/><br />
28
<s:property value="dir" /><br />
29
</body>
30
</html>
31
上傳頁面:
2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

1
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2
<%@ taglib prefix="s" uri="/struts-tags" %>
3
<%
4
String path = request.getContextPath();
5
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
6
%>
7
8
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
9
<html>
10
<head>
11
<base href="<%=basePath%>">
12
13
<title>最新產品發布頁</title>
14
15
<meta http-equiv="pragma" content="no-cache">
16
<meta http-equiv="cache-control" content="no-cache">
17
<meta http-equiv="expires" content="0">
18
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
19
<meta http-equiv="description" content="This is my page">
20
<!--
21
<link rel="stylesheet" type="text/css" href="styles.css">
22
-->
23
24
</head>
25
26
<body>
27
<s:form action="uploadFile" method="post" enctype="multipart/form-data">
28
<s:file name = "doc" label="上傳視頻" />
29
<s:submit value="上傳" />
30
</s:form>
31
</body>
32
</html>
33

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

很容易就會報錯,空指針異常。
原因在于上傳頁面<s:file name="這里面的值與action的值不匹配" />
可是我上傳成功之后,up.jsp頁面沒有傳入任何值,郁悶了~
新手,多指點指點,謝謝~
沒有所謂的命運,只有不同的選擇!