struts2文件上传commons_fileUpload

本文详细介绍使用Struts2框架进行文件上传的全过程,包括原生表单与Struts2表单提交、struts.xml配置、UploadAction类实现及图片展示。

一、 JSP页面用原生表单,或者struts2表单提交文件

<s:form action="upload.action" enctype="multipart/form-data" method="post">
		<s:file name="upload" label="选择文件"></s:file>
		<s:submit value="提交"></s:submit>
	</s:form>

二、 在struts.xml配置文件增加配置

<action name="upload" class="action.UploadAction" method="doUpload">
			<result name="upload_success">showImg.jsp</result>
//储存路径配置
			<param name="savePath">/upload</param>
		</action>

三、 写一个src/action/UploadAction类

//封装文件四大属性:与表单属性相对应;
//uploadContentType=控件名+ContentType;
//uploadFileName=控件名+FileName;
public class UploadAction {
private File upload;
private String uploadContentType;
private String uploadFileName;
private String savePath;

public String doUpload(){
//字节数组
	byte[] byteArr=new byte[1024];
	try {
//用流接收文件
		FileInputStream fis=new FileInputStream(upload);
		FileOutputStream fos=new FileOutputStream(getSavePath()+"\\"+getUploadFileName());
			int length=fis.read(byteArr);
//如果文件大小正常,图片保存到upload文件夹
			while(length!=-1){
				fos.write(byteArr);
				length=fis.read(byteArr);
			}
			fos.flush();
			fos.close();
			fis.close();
		} catch (IOException e) {
			e.printStackTrace();
			return "upload_error";
		}
	
	return "upload_success";
}

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;
}
//savePath路径生成:服务器路径
public String getSavePath() {
	return ServletActionContext.getServletContext().getRealPath(savePath);
			}
public void setSavePath(String savePath) {
	this.savePath = savePath;
}

}

四、 在下一个JSP页面显示出来

<img src="upload/<s:property value='uploadFileName'/>">

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值