struts2中的文件上传

本文详细介绍使用Struts2框架实现文件上传的过程,包括所需jar包、页面编写、action类设计及配置步骤。

一:导入需要的jar包commons-fileupload和commons-io必不可少

二:编写页面,以上传照片为例

<form action="file_upload.action" method="post"
	   enctype="multipart/form-data">
		请选择要上传的照片:<input type="file" name="images"/> <br>
		<input type="submit" value="提交"/>  
</form>


注意:文件上传时表单内一定要有enctype,并且enctype一定为multipart/form-data

三:编写action类

package com.action;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

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


public class FileAction {
	
	//file对象,必须与file控件的name相同
	private File images;
	//上传的文件的名称,格式:控件名FileName
	private String imagesFileName;
	//上传文件的类型 image/png,格式:控件名ContentType  (可选)
	private String imagesContentType;
	//每天创建一个文件夹
	private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
	
	
	public File getImages() {
		return images;
	}
	public void setImages(File images) {
		this.images = images;
	}
	public String getImagesFileName() {
		return imagesFileName;
	}
	public void setImagesFileName(String imagesFileName) {
		this.imagesFileName = imagesFileName;
	}
	public String getImagesContentType() {
		return imagesContentType;
	}
	public void setImagesContentType(String imagesContentType) {
		this.imagesContentType = imagesContentType;
	}
	
	/**
	 * 文件的上传
	 * 如果是多文件上传的话,则需要把上面的3个属性都变成数组,然后循环copy.
	 * @return
	 * @throws Exception
	 */
	public String upload() throws Exception{
		//在服务器上建立文件夹images,path为该文件夹在服务器上的路径
		String path = ServletActionContext.getServletContext().getRealPath("/images");
		System.out.println(path);
		//以当前系统时间在path下创建一个文件夹(根据上面的格式为每天创建一个文件夹)
		File pf = new File(path, format.format(new Date()));
		//如果该文件夹不存在,则创建该文件夹
		if(!pf.exists()){
			pf.mkdir();   
		}
		//让名称不重复
		Long time = System.currentTimeMillis();
		//获取图片的后缀
		String ext = imagesFileName.substring(imagesFileName.lastIndexOf("."));
		String name = time+ext;
		//把上传的文件写入path下的images文件夹中
		File file = new File(pf,name);
		FileUtils.copyFile(images, file);
		return "success";
	}
}

四:在struts.xml中配置action

<struts>
	<package name="file" namespace="/" extends="struts-default">
		<action name="file_*" method="{1}" class="com.action.FileAction">
			<result>show.jsp</result>
		</action>
	</package>
</struts>

五:在web.xml文件中配置struts2的过滤器

<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>

六:结果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值