利用struts2上传文件

利用Struts2进行文件上传
1、需要commons-fileupload.jar和commons-io.jar这两个jar包
2、要求上传页面form表单method为post,enctype为multipart/form-data
<input type="file" name="image"/>
3、编写动作类
属性有要求:
private File image;//代表上传的文件
private String imageFileName;//代表上传文件的文件名
private String imageContentType;//代表上传文件的MIME类型
上传的代码可以使用commons-io。jar包中FileUtils.copyFile(src,dest);
4、struts2默认的文件上传大小是2M,我们可以在struts.xml中通过以下配置更改其上传文件的大小:

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

应用实例:

1、上传单个文件

上传文件的jsp页面:

<form action="${pageContext.request.contextPath}/upload1" method="post" enctype="multipart/form-data">
  文件:<input type="file" name="upload"/><br/>
  <input type="submit" value="go"/>
  </form>

struts.xml文件配置:

<action name="upload1" class="cn.itcast.action.FileUploadAction" method="upload">
<result name="success">/uploadResult.jsp</result>
</action>

FileUploadAction如下:

package cn.itcast.action;


import java.io.File;


import javax.servlet.ServletContext;


import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;


import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;


public class FileUploadAction extends ActionSupport {
//必须要有以下三个属性,且命名规范必须如此
private File upload;
private String uploadFileName;
private String uploadContentType;

public File getUpload() {
return upload;
}


public void setUpload(File upload) {
this.upload = upload;
}


public String getUploadFileName() {
return uploadFileName;
}


public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}


public String getUploadContentType() {
return uploadContentType;
}


public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}


public String upload(){
try{
ServletContext context=ServletActionContext.getServletContext();
String realPath=context.getRealPath("/upload");
File desFile=new File(realPath, uploadFileName);//目的
FileUtils.copyFile(upload, desFile);
context.setAttribute("msg", "文件上传成功!");
return "success";
}catch (Exception e) {
new RuntimeException(e);
}
return null;
}
}

最终的结果页面如下

${msg}

2、上传多个文件:

比上传单个文件稍微改动一点点

package cn.itcast.action;

import java.io.File;

import javax.servlet.ServletContext;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileMultiUploadAction extends ActionSupport {
	private File[] upload;
	private String[] uploadFileName;
	private String[] uploadContentType;
	
	public File[] getUpload() {
		return upload;
	}

	public void setUpload(File[] upload) {
		this.upload = upload;
	}

	public String[] getUploadFileName() {
		return uploadFileName;
	}

	public void setUploadFileName(String[] uploadFileName) {
		this.uploadFileName = uploadFileName;
	}

	public String[] getUploadContentType() {
		return uploadContentType;
	}

	public void setUploadContentType(String[] uploadContentType) {
		this.uploadContentType = uploadContentType;
	}

	public String multiUpload(){
		try {
			ServletContext context=ServletActionContext.getServletContext();
			String path=context.getRealPath("/upload");
			if(uploadFileName!=null){
				for(int i=0;i<uploadFileName.length;i++){
					File desFile=new File(path, uploadFileName[i]);
					FileUtils.copyFile(upload[i], desFile);
				}
				context.setAttribute("msg", "上传成功!!");
				return "success";
			}
		} catch (Exception e) {
			new RuntimeException(e);
		}
		return null;
	}
}
upload.jsp如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">      </head>
  <body>
  <form action="${pageContext.request.contextPath }/multiUpload" method="post" enctype="multipart/form-data">
  		<input type="file" name="upload"/><br/>
  		<input type="file" name="upload"/><br/>
  		<input type="file" name="upload"/><br/>
  		<input type="submit" value="go"/>
  </form>
  </body>
</html>

当然要注意这是运用的struts2框架,因此要在web项目中加入该框架所需要的jar包,并在web.xml中配置其过滤器如下:

<filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值