- 浏览: 66856 次
文章分类
最新评论
struts2文件的上传和下载
(一)从底层透析文件上传的实现,此时并没有介入struts2
1、upload.jsp,在form中属性method默认为get,涉及文件上传时必须改为post,默认enctype="application/x-www-form-urlencoded"
,我们暂且不修改,看会有什么结果
1<%@pagelanguage="java"contentType="text/html;charset=GBK"
2pageEncoding="GBK"%>
3<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
4<html>
5<head>
6<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
7<title>Inserttitlehere</title>
8</head>
9<body>
10<formaction="result.jsp"method="post"
11enctype="application/x-www-form-urlencoded">
12Information:
13<inputtype="text"name="info">
14<br>
15File:
16<inputtype="file"name="file">
17<br>
18<inputtype="submit"name="submit"value="submit">
19</form>
20</body>
21</html>
2pageEncoding="GBK"%>
3<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
4<html>
5<head>
6<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
7<title>Inserttitlehere</title>
8</head>
9<body>
10<formaction="result.jsp"method="post"
11enctype="application/x-www-form-urlencoded">
12Information:
13<inputtype="text"name="info">
14<br>
15File:
16<inputtype="file"name="file">
17<br>
18<inputtype="submit"name="submit"value="submit">
19</form>
20</body>
21</html>
result.jsp
1<%@pagelanguage="java"contentType="text/html;charset=GBK"
2pageEncoding="GBK"%>
3<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
4<html>
5<head>
6<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
7<title>Inserttitlehere</title>
8</head>
9<body>
10Information:<%=request.getParameter("info")%><br>
11File:<%=request.getParameter("file")%><br>
12</body>
13</html>
2pageEncoding="GBK"%>
3<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
4<html>
5<head>
6<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
7<title>Inserttitlehere</title>
8</head>
9<body>
10Information:<%=request.getParameter("info")%><br>
11File:<%=request.getParameter("file")%><br>
12</body>
13</html>
结果:
2、修改result.jsp页面代码,输出读入的流
<%@pageimport="java.io.*"%>
<body>
<%
InputStreamis=request.getInputStream();
BufferedReaderbr=newBufferedReader(newInputStreamReader(is));
Stringbuffer=null;
while((buffer=br.readLine())!=null){
out.print(buffer+"<br>");
}
%>
</body>
<%
InputStreamis=request.getInputStream();
BufferedReaderbr=newBufferedReader(newInputStreamReader(is));
Stringbuffer=null;
while((buffer=br.readLine())!=null){
out.print(buffer+"<br>");
}
%>
</body>
结果:
这个结果可以断定,文件的上传并没有成功,而仅仅是上传了文件的路径信息而已
3、把upload.jsp中form的enctype属性改为enctype="multipart/form-data"
<formaction="result.jsp"method="post"enctype="multipart/form-data">
Information:
<inputtype="text"name="info">
<br>
File:
<inputtype="file"name="file">
<br>
<inputtype="submit"name="submit"value="submit">
</form>
Information:
<inputtype="text"name="info">
<br>
File:
<inputtype="file"name="file">
<br>
<inputtype="submit"name="submit"value="submit">
</form>
结果:
说明文件上传是成功的。
(二)手动采用fileupload组建进行文件上传
upload2.jsp
1<%@pagelanguage="java"contentType="text/html;charset=GB18030"
2pageEncoding="GB18030"%>
3<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
4<html>
5<head>
6<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
7<title>Inserttitlehere</title>
8</head>
9<body>
10<formaction="/MyStruts2/UploadServlet"method="post"enctype="multipart/form-data">
11username:
12<inputtype="text"name="username">
13<br>
14password:
15<inputtype="password"name="password">
16<br>
17file1:
18<inputtype="file"name="file1">
19<br>
20file2:
21<inputtype="file"name="file2">
22<br>
23<inputtype="submit"value="submit">
24</form>
25</body>
26</html>
2pageEncoding="GB18030"%>
3<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
4<html>
5<head>
6<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
7<title>Inserttitlehere</title>
8</head>
9<body>
10<formaction="/MyStruts2/UploadServlet"method="post"enctype="multipart/form-data">
11username:
12<inputtype="text"name="username">
13<br>
14password:
15<inputtype="password"name="password">
16<br>
17file1:
18<inputtype="file"name="file1">
19<br>
20file2:
21<inputtype="file"name="file2">
22<br>
23<inputtype="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>
<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
1packagecom.test.servlet;
2
3importjava.io.File;
4importjava.io.FileOutputStream;
5importjava.io.IOException;
6importjava.io.InputStream;
7importjava.io.OutputStream;
8importjava.util.List;
9
10importjavax.servlet.ServletException;
11importjavax.servlet.http.HttpServlet;
12importjavax.servlet.http.HttpServletRequest;
13importjavax.servlet.http.HttpServletResponse;
14
15importorg.apache.commons.fileupload.FileItem;
16importorg.apache.commons.fileupload.FileUploadException;
17importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
18importorg.apache.commons.fileupload.servlet.ServletFileUpload;
19
20@SuppressWarnings("serial")
21publicclassUploadServletextendsHttpServlet{
22@SuppressWarnings({"unchecked","deprecation"})
23publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
24throwsServletException,IOException{
25
26DiskFileItemFactoryfactory=newDiskFileItemFactory();
27
28Stringpath=request.getRealPath("/upload");
29
30factory.setRepository(newFile(path));
31
32factory.setSizeThreshold(1024*1024);
33
34ServletFileUploadupload=newServletFileUpload(factory);
35
36try{
37List<FileItem>list=upload.parseRequest(request);
38
39for(FileItemitem:list){
40if(item.isFormField()){
41Stringname=item.getFieldName();
42
43Stringvalue=item.getString("gbk");
44
45System.out.println(name);
46
47request.setAttribute(name,value);
48}else{
49Stringname=item.getFieldName();
50
51Stringvalue=item.getName();
52
53intstart=value.lastIndexOf("\\");
54
55StringfileName=value.substring(start+1);
56
57request.setAttribute(name,fileName);
58
59item.write(newFile(path,fileName));
60
61OutputStreamos=newFileOutputStream(newFile(path,
62fileName));
63
64InputStreamis=item.getInputStream();
65
66byte[]buffer=newbyte[400];
67
68intlength=0;
69
70while((length=is.read(buffer))>0){
71os.write(buffer,0,length);
72}
73
74os.close();
75
76is.close();
77
78}
79}
80}
81
82catch(Exceptionex){
83ex.printStackTrace();
84}
85request.getRequestDispatcher("upload/result2.jsp").forward(request,
86response);
87}
88
89}
2
3importjava.io.File;
4importjava.io.FileOutputStream;
5importjava.io.IOException;
6importjava.io.InputStream;
7importjava.io.OutputStream;
8importjava.util.List;
9
10importjavax.servlet.ServletException;
11importjavax.servlet.http.HttpServlet;
12importjavax.servlet.http.HttpServletRequest;
13importjavax.servlet.http.HttpServletResponse;
14
15importorg.apache.commons.fileupload.FileItem;
16importorg.apache.commons.fileupload.FileUploadException;
17importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
18importorg.apache.commons.fileupload.servlet.ServletFileUpload;
19
20@SuppressWarnings("serial")
21publicclassUploadServletextendsHttpServlet{
22@SuppressWarnings({"unchecked","deprecation"})
23publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
24throwsServletException,IOException{
25
26DiskFileItemFactoryfactory=newDiskFileItemFactory();
27
28Stringpath=request.getRealPath("/upload");
29
30factory.setRepository(newFile(path));
31
32factory.setSizeThreshold(1024*1024);
33
34ServletFileUploadupload=newServletFileUpload(factory);
35
36try{
37List<FileItem>list=upload.parseRequest(request);
38
39for(FileItemitem:list){
40if(item.isFormField()){
41Stringname=item.getFieldName();
42
43Stringvalue=item.getString("gbk");
44
45System.out.println(name);
46
47request.setAttribute(name,value);
48}else{
49Stringname=item.getFieldName();
50
51Stringvalue=item.getName();
52
53intstart=value.lastIndexOf("\\");
54
55StringfileName=value.substring(start+1);
56
57request.setAttribute(name,fileName);
58
59item.write(newFile(path,fileName));
60
61OutputStreamos=newFileOutputStream(newFile(path,
62fileName));
63
64InputStreamis=item.getInputStream();
65
66byte[]buffer=newbyte[400];
67
68intlength=0;
69
70while((length=is.read(buffer))>0){
71os.write(buffer,0,length);
72}
73
74os.close();
75
76is.close();
77
78}
79}
80}
81
82catch(Exceptionex){
83ex.printStackTrace();
84}
85request.getRequestDispatcher("upload/result2.jsp").forward(request,
86response);
87}
88
89}
结果:
(三)使用struts2进行文件上传、下载
需引入两个jar包
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-io-1.3.2.jar
这两个jar包在struts2.1.6版本中已经自带,较低版本需到apache网站下载,网址:http://commons.apache.org/
1、单文件上传
upload3.jsp
1<%@pagelanguage="java"contentType="text/html;charset=GB18030"
2pageEncoding="GB18030"%>
3<%@taglibprefix="s"uri="/struts-tags"%>
4<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
5<html>
6<head>
7<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
8<title>Inserttitlehere</title>
9</head>
10<body>
11<s:formaction="upload"method="post"theme="simple"
12enctype="multipart/form-data">
13<tablealign="center"width="50%"border="1">
14<tr>
15<td>
16username
17</td>
18<td>
19<s:textfieldname="username"></s:textfield>
20</td>
21</tr>
22<tr>
23<td>
24password
25</td>
26<td>
27<s:passwordname="password"></s:password>
28</td>
29</tr>
30<tr>
31<td>
32file
33</td>
34
35<td>
36<s:filename="file"></s:file>
37
38</td>
39</tr>
40<tr>
41<td>
42<s:submitvalue="submit"></s:submit>
43</td>
44<td>
45<s:resetvalue="reset"></s:reset>
46</td>
47</tr>
48</table>
49</s:form>
50</body>
51</html>
2pageEncoding="GB18030"%>
3<%@taglibprefix="s"uri="/struts-tags"%>
4<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
5<html>
6<head>
7<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
8<title>Inserttitlehere</title>
9</head>
10<body>
11<s:formaction="upload"method="post"theme="simple"
12enctype="multipart/form-data">
13<tablealign="center"width="50%"border="1">
14<tr>
15<td>
16username
17</td>
18<td>
19<s:textfieldname="username"></s:textfield>
20</td>
21</tr>
22<tr>
23<td>
24password
25</td>
26<td>
27<s:passwordname="password"></s:password>
28</td>
29</tr>
30<tr>
31<td>
32file
33</td>
34
35<td>
36<s:filename="file"></s:file>
37
38</td>
39</tr>
40<tr>
41<td>
42<s:submitvalue="submit"></s:submit>
43</td>
44<td>
45<s:resetvalue="reset"></s:reset>
46</td>
47</tr>
48</table>
49</s:form>
50</body>
51</html>
web.xml中的配置
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
struts.xml中的配置
1<?xmlversion="1.0"encoding="GBK"?>
2<!DOCTYPEstrutsPUBLIC
3"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
4"http://struts.apache.org/dtds/struts-2.0.dtd">
5
6<struts>
7<constantname="struts.i18n.encoding"value="gbk"></constant>
8<constantname="struts.multipart.saveDir"value="c:\"></constant>
9<packagename="struts2"extends="struts-default">
10<actionname="upload"class="com.test.action.UploadAction">
11<resultname="success">/upload/result3.jsp</result>
12</action>
13</package>
14</struts>
2<!DOCTYPEstrutsPUBLIC
3"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
4"http://struts.apache.org/dtds/struts-2.0.dtd">
5
6<struts>
7<constantname="struts.i18n.encoding"value="gbk"></constant>
8<constantname="struts.multipart.saveDir"value="c:\"></constant>
9<packagename="struts2"extends="struts-default">
10<actionname="upload"class="com.test.action.UploadAction">
11<resultname="success">/upload/result3.jsp</result>
12</action>
13</package>
14</struts>
UploadAction.java
1packagecom.test.action;
2
3importjava.io.File;
4importjava.io.FileInputStream;
5importjava.io.FileOutputStream;
6importjava.io.InputStream;
7importjava.io.OutputStream;
8
9importorg.apache.struts2.ServletActionContext;
10
11importcom.opensymphony.xwork2.ActionSupport;
12
13@SuppressWarnings("serial")
14publicclassUploadActionextendsActionSupport{
15privateStringusername;
16privateStringpassword;
17privateFilefile;
18privateStringfileFileName;
19privateStringfileContentType;
20
21publicStringgetUsername(){
22returnusername;
23}
24
25publicvoidsetUsername(Stringusername){
26this.username=username;
27}
28
29publicStringgetPassword(){
30returnpassword;
31}
32
33publicvoidsetPassword(Stringpassword){
34this.password=password;
35}
36
37publicFilegetFile(){
38returnfile;
39}
40
41publicvoidsetFile(Filefile){
42this.file=file;
43}
44
45publicStringgetFileFileName(){
46returnfileFileName;
47}
48
49publicvoidsetFileFileName(StringfileFileName){
50this.fileFileName=fileFileName;
51}
52
53publicStringgetFileContentType(){
54returnfileContentType;
55}
56
57publicvoidsetFileContentType(StringfileContentType){
58this.fileContentType=fileContentType;
59}
60
61@SuppressWarnings("deprecation")
62@Override
63publicStringexecute()throwsException{
64InputStreamis=newFileInputStream(file);
65Stringroot=ServletActionContext.getRequest().getRealPath("/upload");
66FiledestFile=newFile(root,this.getFileFileName());
67OutputStreamos=newFileOutputStream(destFile);
68byte[]buffer=newbyte[400];
69
70intlength=0;
71
72while((length=is.read(buffer))>0){
73os.write(buffer,0,length);
74}
75is.close();
76os.close();
77returnSUCCESS;
78}
79}
2
3importjava.io.File;
4importjava.io.FileInputStream;
5importjava.io.FileOutputStream;
6importjava.io.InputStream;
7importjava.io.OutputStream;
8
9importorg.apache.struts2.ServletActionContext;
10
11importcom.opensymphony.xwork2.ActionSupport;
12
13@SuppressWarnings("serial")
14publicclassUploadActionextendsActionSupport{
15privateStringusername;
16privateStringpassword;
17privateFilefile;
18privateStringfileFileName;
19privateStringfileContentType;
20
21publicStringgetUsername(){
22returnusername;
23}
24
25publicvoidsetUsername(Stringusername){
26this.username=username;
27}
28
29publicStringgetPassword(){
30returnpassword;
31}
32
33publicvoidsetPassword(Stringpassword){
34this.password=password;
35}
36
37publicFilegetFile(){
38returnfile;
39}
40
41publicvoidsetFile(Filefile){
42this.file=file;
43}
44
45publicStringgetFileFileName(){
46returnfileFileName;
47}
48
49publicvoidsetFileFileName(StringfileFileName){
50this.fileFileName=fileFileName;
51}
52
53publicStringgetFileContentType(){
54returnfileContentType;
55}
56
57publicvoidsetFileContentType(StringfileContentType){
58this.fileContentType=fileContentType;
59}
60
61@SuppressWarnings("deprecation")
62@Override
63publicStringexecute()throwsException{
64InputStreamis=newFileInputStream(file);
65Stringroot=ServletActionContext.getRequest().getRealPath("/upload");
66FiledestFile=newFile(root,this.getFileFileName());
67OutputStreamos=newFileOutputStream(destFile);
68byte[]buffer=newbyte[400];
69
70intlength=0;
71
72while((length=is.read(buffer))>0){
73os.write(buffer,0,length);
74}
75is.close();
76os.close();
77returnSUCCESS;
78}
79}
结果:
2、多文件上传
修改action
privateList<File>file;
privateList<String>fileFileName;
privateList<String>fileContentType;
privateList<String>fileFileName;
privateList<String>fileContentType;
publicStringexecute()throwsException{
for(inti=0;i<file.size();++i){
InputStreamis=newFileInputStream(file.get(i));
Stringroot=ServletActionContext.getRequest().getRealPath(
"/upload");
FiledestFile=newFile(root,this.getFileFileName().get(i));
OutputStreamos=newFileOutputStream(destFile);
byte[]buffer=newbyte[400];
intlength=0;
while((length=is.read(buffer))>0){
os.write(buffer,0,length);
}
is.close();
os.close();
}
returnSUCCESS;
}
for(inti=0;i<file.size();++i){
InputStreamis=newFileInputStream(file.get(i));
Stringroot=ServletActionContext.getRequest().getRealPath(
"/upload");
FiledestFile=newFile(root,this.getFileFileName().get(i));
OutputStreamos=newFileOutputStream(destFile);
byte[]buffer=newbyte[400];
intlength=0;
while((length=is.read(buffer))>0){
os.write(buffer,0,length);
}
is.close();
os.close();
}
returnSUCCESS;
}
修改upload3.jsp
<tr>
<td>
file1
</td>
<td>
<s:filename="file"></s:file>
</td>
</tr>
<tr>
<td>
file2
</td>
<td>
<s:filename="file"></s:file>
</td>
</tr>
<tr>
<td>
file3
</td>
<td>
<s:filename="file"></s:file>
</td>
</tr>
<td>
file1
</td>
<td>
<s:filename="file"></s:file>
</td>
</tr>
<tr>
<td>
file2
</td>
<td>
<s:filename="file"></s:file>
</td>
</tr>
<tr>
<td>
file3
</td>
<td>
<s:filename="file"></s:file>
</td>
</tr>
结果:
3、任意数量文件上传
在多文件上传的基础上修改upload3.jsp
<scripttype="text/javascript">
functionaddMore()
{
vartd=document.getElementById("more");
varbr=document.createElement("br");
varinput=document.createElement("input");
varbutton=document.createElement("input");
input.type="file";
input.name="file";
button.type="button";
button.value="Remove";
button.onclick=function()
{
td.removeChild(br);
td.removeChild(input);
td.removeChild(button);
}
td.appendChild(br);
td.appendChild(input);
td.appendChild(button);
}
</script>
functionaddMore()
{
vartd=document.getElementById("more");
varbr=document.createElement("br");
varinput=document.createElement("input");
varbutton=document.createElement("input");
input.type="file";
input.name="file";
button.type="button";
button.value="Remove";
button.onclick=function()
{
td.removeChild(br);
td.removeChild(input);
td.removeChild(button);
}
td.appendChild(br);
td.appendChild(input);
td.appendChild(button);
}
</script>
<tr>
<td>
file1
</td>
<tdid="more">
<s:filename="file"></s:file>
<inputtype="button"value="AddMore.."onclick="addMore()">
</td>
</tr>
<td>
file1
</td>
<tdid="more">
<s:filename="file"></s:file>
<inputtype="button"value="AddMore.."onclick="addMore()">
</td>
</tr>
结果:
(四)文件上传类型、大小的限制
使用struts的拦截器,struts2-core-2.1.6.jar/org.apache.struts2.interceptor.FileUploadInterceptor.class的源码中我们可以看到:
publicclassFileUploadInterceptorextendsAbstractInterceptor{
privatestaticfinallongserialVersionUID=-4764627478894962478L;
protectedstaticfinalLoggerLOG=LoggerFactory.getLogger(FileUploadInterceptor.class);
privatestaticfinalStringDEFAULT_MESSAGE="no.message.found";
protectedbooleanuseActionMessageBundle;
protectedLongmaximumSize;
protectedSet<String>allowedTypesSet=Collections.emptySet();
protectedSet<String>allowedExtensionsSet=Collections.emptySet();
privatestaticfinallongserialVersionUID=-4764627478894962478L;
protectedstaticfinalLoggerLOG=LoggerFactory.getLogger(FileUploadInterceptor.class);
privatestaticfinalStringDEFAULT_MESSAGE="no.message.found";
protectedbooleanuseActionMessageBundle;
protectedLongmaximumSize;
protectedSet<String>allowedTypesSet=Collections.emptySet();
protectedSet<String>allowedExtensionsSet=Collections.emptySet();
所以我们只需的struts.xml中配置它的属性allowedTypesSet即可。在action节点中修改拦截器(默认的拦截器中已经有fileUpload拦截器,我们必须提取出来进行参数设置,然后在加上默认的拦截器)。
<actionname="upload"class="com.test.action.UploadAction">
<resultname="success">/upload/result3.jsp</result>
<resultname="input">/upload/upload3.jsp</result>
<interceptor-refname="fileUpload">
<paramname="maximumSize">409600</param>
<paramname="allowedTypes">
application/vnd.ms-powerpoint
</param>
</interceptor-ref>
<interceptor-refname="defaultStack"></interceptor-ref>
</action>
<resultname="success">/upload/result3.jsp</result>
<resultname="input">/upload/upload3.jsp</result>
<interceptor-refname="fileUpload">
<paramname="maximumSize">409600</param>
<paramname="allowedTypes">
application/vnd.ms-powerpoint
</param>
</interceptor-ref>
<interceptor-refname="defaultStack"></interceptor-ref>
</action>
其中<paramname="allowedTypes">application/vnd.ms-powerpoint</param>的allowedTypes的值可在C:\Tomcat
6.0\conf的web.xml文件中查找。
报错信息:
严重:Content-Typenotallowed:file"intrl.txt""upload__138d8aca_120b73e9cf4__8000_00000002.tmp"text/plain
(五)文件的下载
download.jsp
<s:ahref="/MyStruts2/download.action">download</s:a>
DownloadAction.java
1packagecom.test.action;
2
3importjava.io.InputStream;
4
5importorg.apache.struts2.ServletActionContext;
6
7importcom.opensymphony.xwork2.ActionSupport;
8
9publicclassDownloadActionextendsActionSupport{
10publicInputStreamgetDownloadFile(){
11returnServletActionContext.getServletContext().getResourceAsStream(
12"/upload/intrl.ppt");
13}
14
15@Override
16publicStringexecute()throwsException{
17returnSUCCESS;
18}
19}
20
2
3importjava.io.InputStream;
4
5importorg.apache.struts2.ServletActionContext;
6
7importcom.opensymphony.xwork2.ActionSupport;
8
9publicclassDownloadActionextendsActionSupport{
10publicInputStreamgetDownloadFile(){
11returnServletActionContext.getServletContext().getResourceAsStream(
12"/upload/intrl.ppt");
13}
14
15@Override
16publicStringexecute()throwsException{
17returnSUCCESS;
18}
19}
20
web.xml中action配置
<actionname="download"
class="com.test.action.DownloadAction">
<resultname="success"type="stream">
<paramname="contentType">
application/vnd.ms-powerpoint
</param>
<paramname="contentDisposition">
filename="intrl.ppt"
</param>
<paramname="inputName">downloadFile</param>
</result>
</action>
class="com.test.action.DownloadAction">
<resultname="success"type="stream">
<paramname="contentType">
application/vnd.ms-powerpoint
</param>
<paramname="contentDisposition">
filename="intrl.ppt"
</param>
<paramname="inputName">downloadFile</param>
</result>
</action>
相关推荐
struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载
struts2 文件上传和下载struts2 文件上传和下载
Struts2文件上传和下载教程
struts2文件上传和下载精细讲解,封装了所有用到的上传和下载,非常详细!
struts2 文件上传和下载示例程序 http://blog.csdn.net/zhiweiv/archive/2008/10/13/3070610.aspx
struts2中的文件上传和下载示例 struts2中的文件上传和下载示例 struts2中的文件上传和下载示例
Struts2 文件上传下载 多文件 单文件 实例;支持单个或多个文件的上传下载,并且自定义上传文件的大小和类型!!!
在struts2基础上实现的包括单文件、多文件的上传及下载
Struts2中文件上传与下载案例
struts2文件上传与下载,eclipse与myeclipse导入即可使用的代码,简单易懂,希望对你有帮助,喜欢的给个五星评价,谢谢!!!
http://blog.csdn.net/johnjobs/article/details/8076832博文中附件的下载链接
Struts2文件上传源码 Struts2文件上传源码 Struts2文件上传源码 Struts2文件上传源码 Struts2文件上传源码
struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传
Struts2文件上传下载和表单重复提交问题
需求 1.能够对多个文件进行上传(可以选择上传文件个...提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载 随意文件 java Struts2 单例 配置 动态读取 李顺利
struts2文件上传与下载, <s:fielderror></s:fielderror> 文件"></s:file> <s:submit id="submit" value="sbumit"></s:submit> </s:form>
Struts文件的上传和下载Struts文件的上传和下载Struts文件的上传和下载
struts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileupload