关闭

struts2上传文件

268人阅读 评论(0) 收藏 举报

如何使用struts2上传文件

 

1、JSP提交表单

<!-- 后面的action不能少,它会根据action前面的字符串去匹配是否有对应的请求 -->
  <form action="personAdd.action" method="post" enctype="multipart/form-data"> 
文件:<input type="file" name="myfile"><br>

 

2、对应的action接受传递过来的表单数据

package hb.person.action;

import hb.person.model.Person;
import hb.person.service.IPersonService;
import hb.util.BeanUtil;
import hb.util.MD5Util;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.security.NoSuchAlgorithmException;
import java.util.Calendar;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;
import org.hibernate.HibernateException;
import com.opensymphony.xwork2.ActionSupport;

public class PersonAction extends ActionSupport {

	//接收表单传递过来的参数需要保证属性名和表单名是一致的,并且有set方法	
	File myfile;//上传的文件
	String myfileFileName;//上传文件名 表单名+FileName
	String myfileContentType;//上传文件类型 表单名+ContentType
	public void setMyfile(File myfile) {
		this.myfile = myfile;
	}
	public void setMyfileFileName(String myfileFileName) {
		this.myfileFileName = myfileFileName;
	}
	public void setMyfileContentType(String myfileContentType) {
		this.myfileContentType = myfileContentType;
	}


	@Override
	public String execute() throws Exception {
		return "success";
	}
	
	public String addPerson(){
		Person person = new Person();
		person.setAge(new Integer(this.age));
		person.setName(this.name);
		try {
			person.setPassword(MD5Util.EncoderPwdByMd5(this.password));
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		person.setBirthday(Calendar.getInstance().getTime());
		if(this.myfile != null){
			System.out.println(this.myfileFileName);
			File temp = new File("c:\\huangbiao");
			try {
				FileUtils.copyFile(this.myfile, temp);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		IPersonService personService = (IPersonService)BeanUtil.getBean("ipersonService");
		personService.addPerson(person);
		return "success";
	}
	
}

 

 

上传多个文件?

1、表单的文件名字是一样的

文件:<input type="file" name="myfile"><br>
文件:<input type="file" name="myfile"><br>
文件:<input type="file" name="myfile"><br>

 2、对应的action属性使用数组或者是list

List<File> myfile;//上传的文件
List<String> myfileFileName;//上传文件名
List<String> myfileContentType;//上传文件类型
public void setMyfile(List<File> myfile) {
		this.myfile = myfile;
	}
public void setMyfileFileName(List<String> myfileFileName) {
		this.myfileFileName = myfileFileName;
	}
public void setMyfileContentType(List<String> myfileContentType) {
		this.myfileContentType = myfileContentType;
	}

 备注:struts2只认识setMyfile、setMyfileFileName、setMyfileContentType,不管是否是一个还是多个文件上传,实际上是根据——接收表单传递过来的参数需要保证属性名和表单名是一致的,并且有set方法

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:310790次
    • 积分:8724
    • 等级:
    • 排名:第2259名
    • 原创:1096篇
    • 转载:14篇
    • 译文:0篇
    • 评论:5条
    最新评论