Struts2文件上传

本文介绍使用Struts2框架实现单文件及批量文件上传的方法。通过具体代码示例展示了如何配置Struts2来处理文件上传请求,包括上传单个文件和多个文件,并设置最大文件大小限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单文件上传

UplaodAction.java

public class UploadAction extends ActionSupport { private File file; //InputName private String fileFileName; //格式:InputName+”FileName” private String fileContentType; //格式:InputName+”ContentType”. public String upload() throws IOException{ HttpServletRequest request = ServletActionContext.getRequest(); //得到request String path = request.getRealPath("/upload"); //将文件上传到upload文件夹下,返回虚拟路径在硬盘上的绝对路径 InputStream is = new FileInputStream(file); //Input流 OutputStream os = new FileOutputStream(new File(path,fileFileName));//上传的文件保存的位置 int len = 0; byte [] buffer = new byte[1024]; while((len = is.read(buffer)) != -1){ os.write(buffer,0,len); } is.close(); os.close(); return Action.SUCCESS; } //省略get set方法 }
Upload.jsp

 <form action="/Upload/aaa/upload" method="post" enctype="multipart/form-data">
   		文件:<input type="file" name="file"></br>   <!--name属性与Action中的private File file对应 -->
   		<input type="submit" value="上传">
   </form>
struts.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <!-- 设置临时目录 -->
	<constant name="struts.multipart.saveDir" value="c:\"></constant>
	<!-- 设置上传文件的最大大小,>=maximumSize -->
	<constant name="struts.multipart.maxSize" value="20971520"></constant>
	
    <package name="default" namespace="/aaa" extends="struts-default">
        <action name="upload" class="cn.sxt.action.UploadAction" method="upload">
           <result>/index.jsp</result>
           <interceptor-ref name="fileUpload">	<!-- 应用fileUpload过滤器 -->
           		<param name="maximumSize">20971520</param>	<!-- 设置上传文件的最大大小 -->
           </interceptor-ref>
           <interceptor-ref name="defaultStack"></interceptor-ref>
        </action>
    </package>
    <include file="example.xml"/>
</struts>



批量文件上传

UploadMoreAction.java

public class UploadMoreAction extends ActionSupport {
	private File [] file;	//因为上传多个文件,inputName一样,所以是数组形式
	private String[]fileFileName;
	private String []fileContentType;
	
	public String uploadMore() throws IOException{
		HttpServletRequest request = ServletActionContext.getRequest();
		String path = request.getRealPath("upload");//上传文件保存的路径
		for(int i = 0;i<file.length;i++){
			InputStream is = new FileInputStream(file[i]);
			OutputStream os = new FileOutputStream(new File(path,fileFileName[i]));
			int len = 0;
			byte []buffer = new byte[1024];
			while((len = is.read(buffer)) != -1){
				os.write(buffer,0,len);
			}
			is.close();
			os.close();
		}
		return Action.SUCCESS;
	}
	//shenglveget
}
UploadMore.jsp

<form action="/Upload/aaa/uploadmore" method="post" enctype="multipart/form-data">
    	<input type="file" name="file"></br>
    	<input type="file" name="file"></br>
    	<input type="file" name="file"></br> <!--inputName保持一致  -->
    	<input type="submit" value="上传">
    </form>
struts.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <!-- 设置临时目录 -->
	<constant name="struts.multipart.saveDir" value="c:\"></constant>
	<!-- 设置上传文件的最大大小,>=maximumSize -->
	<constant name="struts.multipart.maxSize" value="20971520"></constant>
	
    <package name="default" namespace="/aaa" extends="struts-default">
        <action name="upload" class="cn.sxt.action.UploadMoreAction" method="upload">
           <result>/index.jsp</result>
           <interceptor-ref name="fileUpload">	<!-- 应用fileUpload过滤器 -->
           		<param name="maximumSize">20971520</param>	<!-- 设置上传文件的最大大小 -->
           </interceptor-ref>
           <interceptor-ref name="defaultStack"></interceptor-ref>
        </action>
    </package>
    <include file="example.xml"/>
</struts>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值