Struts2实现简单的上传功能

         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的优先级要高。

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



你可能感兴趣的:(Struts2实现简单的上传功能)