首页>代码>struts2多文件上传实例代码>/FileUpLoad/src/action/UploadAction.java
package action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {

	private File[] upload;		//上传的文件内容
 
	private String[] uploadContentType;    //上传的文件类型

	private String[] uploadFileName;     //上传的文件名称

	private String savePath; 		//上传后的文件地址
	
	/**
	 * 注意:上传文件类型和上传文件名称,这两个属性的定义名,是根据文件内容这个属性的名称来定义的
	 *       比如:上传的文件内容--》  xxx
	 *             上传的文件类型--》  xxxContentType
	 *             上传的文件名称--》  xxxFileName
	 */
	
	public void addActionError(String anErrorMessage) {
		// 如果错误信息是此类英文开头
		if (anErrorMessage.startsWith("Request exceeded allowed size limit!")) {
			// 则使用正则表达式取出正在上传的文件大小值以及允许的值
			Matcher matcher = Pattern.compile("\\d+,\\d+,\\d+").matcher(anErrorMessage);
			String currentSize = "";
			String maxSize = "";
			if (matcher.find()) {
				maxSize = matcher.group();
			}
			if (matcher.find()) {
				currentSize = matcher.group();
			}

			super.addActionError("你上传的文件(" + currentSize + ")超过允许的大小("
					+ maxSize + ")");
		} else {
			// 否则继续添加其他错误
			super.addActionError(anErrorMessage);
		}
	}

	public String upload() {
		try {
			for (int i = 0; i < upload.length; i++) {

				String url = ServletActionContext.getServletContext()
						.getRealPath(savePath)
						+ File.separator + uploadFileName[i];
				FileInputStream fis = new FileInputStream(upload[i]);
				FileOutputStream fos = new FileOutputStream(url);
				byte[] data = new byte[fis.available()];
				fis.read(data);
				fos.write(data);
				fis.close();
				fos.flush();
				fos.close();
			}
			ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
			ServletActionContext.getResponse().getWriter().print("<h1>上传成功!</h1>");

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return null;
	}

	public File[] getUpload() {
		return upload;
	}

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

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

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

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

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

	public String getSavePath() {
		return savePath;
	}

	public void setSavePath(String savePath) {
		this.savePath = savePath;
	}

}
最近下载更多
uni-code_0123  LV1 2023年11月29日
lyd19931203  LV21 2020年6月17日
lin980519  LV2 2019年6月27日
zhaker  LV3 2018年11月12日
gypgyp  LV10 2018年5月29日
wxsuperwx  LV17 2018年2月1日
liuhongqi123  LV2 2018年1月2日
SANQIAN  LV5 2017年10月23日
BestClever  LV32 2017年8月2日
李云龙910110  LV1 2017年6月1日
最近浏览更多
1358849392  LV21 4月12日
uni-code_0123  LV1 2023年11月29日
地球导演思考  LV2 2023年4月22日
13561143836  LV7 2021年11月10日
gvebebd  LV5 2020年6月9日
pt11100  LV9 2020年5月17日
张青峰  LV10 2020年4月14日
liuguojun920  LV6 2020年1月15日
liuwenlong  LV20 2019年12月24日
一页尘埃  LV7 2019年9月18日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友