Struts2实现简单的上传功能

来源:互联网 发布:备份数据库的sql语句 编辑:程序博客网 时间:2024/05/16 06:41

         Struts2提供的文件上传下载机制十分简便,使得我们写很少的代码,就可以实现该功能,单文件上传、多文件上传、下载等。

   当然,我们肯定要引入Struts2上传下载文件相关的jar包的,这里需要引入这两个包:commons-io-1.3.2.jar和commons-fileupload-1.2.1.jar


编辑Action代码,实现单文件的上传

package com.lf.zym.struts2;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import com.opensymphony.xwork2.Action;public class UploadTestAction {private String title;private String myFileFileName;private File myFile;private String myFileContentType;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getMyFileFileName() {return myFileFileName;}public void setMyFileFileName(String myFileFileName) {this.myFileFileName = myFileFileName;}public File getMyFile() {return myFile;}public void setMyFile(File myFile) {this.myFile = myFile;}public String getMyFileContentType() {return myFileContentType;}public void setMyFileContentType(String myFileContentType) {this.myFileContentType = myFileContentType;}public String execute() throws Exception{InputStream is=null;OutputStream os=null;try {is = new BufferedInputStream(new FileInputStream(myFile));os = new BufferedOutputStream(new FileOutputStream("f:\\"+myFileFileName));byte[] buffer = new byte[1024];int len=0;while((len=is.read(buffer))>0){os.write(buffer,0,len);}}finally{if(is !=null){is.close();}if(os!=null){os.close();}}return Action.SUCCESS;}}
Struts2.xml配置:

<struts><constant name="struts.i18n.encoding" value="UTF-8"/><constant name="struts.configuration.xml.reload" value="true"/><constant name="struts.devMode" value="true"/><package name="upload-package" extends="struts-default"><action name="upload" class="com.lf.zym.struts2.UploadTestAction"><result>/success.jsp</result></action></package></struts>

JSP页面:

<body>    <form action="upload.action" method="post" enctype="multipart/form-data">    标题:<input type="text" name="title">    文件:<input type="file" name="myFile">    <input type="submit" value="上传">    </form>  </body>



       上传成功之后,在指定的文件存放位置就可以找到我们上传的文件,在这里遇到这样一个问题,当我传大文件的时候,会报错,上传失败。这是因为我们没有设置上传文件的大小,只需要设置一下就可以,可以建立一个struts.properties,设置上传文件的大小:

struts.multipart.maxSize=10485760

也可以直接在struts2中进行配置:

<constant name="struts.multipart.maxSize" value="10485760"/>


但是这里要注意的是,只能设置一个,如果都设置的话,struts.properties的优先级要高。

多文件的上传,还有下载功能实现在下一篇博客会总结。



1 0
原创粉丝点击