struts2上传文件

原创 2013年12月04日 10:10:52

如何使用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方法

 

 

相关文章推荐

struts2文件上传

  • 2014年10月10日 14:53
  • 3.6MB
  • 下载

struts2文件上传

  • 2013年07月30日 14:15
  • 18.7MB
  • 下载

使用httpclient模拟表单上传文件,后台用struts2接收

使用httpclient模拟表单上传文件,后台用struts2接收

struts2上传文件

  • 2013年12月18日 08:47
  • 3.15MB
  • 下载

struts2图片和文件上传

  • 2013年07月09日 10:20
  • 42KB
  • 下载

struts2的文件类型上传的详解

这个在struts2的doc中已经有所说明,但是说得并不详细,而且他给的例子是有错误的,下面我将列出文件上传并限制类型的具体步骤 struts2版本是2.1.6 struts2是根据conte...

struts2之多个文件上传

  • 2014年09月12日 13:22
  • 3.22MB
  • 下载

struts2实现多文件上传和下载

  • 2015年04月23日 13:57
  • 14.44MB
  • 下载

Struts2 - 上传任意多个文件

Struts2 - 上传任意多个文件 一、上传单个文件 在Struts1.x中已经提供了用于上传文件的组件。而在Struts2中提供了一个更为 容易操作的上传文件组件。所不同的是,Struts1...

html5+ajax文件上传struts2接收

  • 2015年09月17日 20:29
  • 76KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2上传文件
举报原因:
原因补充:

(最多只允许输入30个字)