Struts2简单的实现多文件上传

本文介绍了如何使用Struts2结合apache的commons-fileupload库来实现在JSP页面上进行多文件上传的功能。关键步骤包括:设置JSP表单为POST提交并指定multipart/form-data类型,定义Action类的File属性及对应get/set方法,以及在Struts.xml中进行配置。完成这些步骤后,服务启动即可实现文件上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:文件上传
1、struts2的文件上传功能使用的是apache下的commons-fileupload来实现。
2、Jsp的表单要求是post提交,并且enctype=”multipart/form-data”
jsp页面代码:

在这里插入图片描述

3、action的代码:在Action中需要提供3个属性,一个File 类型,名称是表单域名,其它两个分别是表单域名+FileName,表单域名+ContentType;并且提供get/set方法

Action处理代码

public class BatchUploadAction {
//
// 得到上传的文件(要与form表单中file控件名一致)
private File[] file;
// 得到文件的名称
private String[] fileFileName;
// 得到文件的类型
private String[] fileContentType;

public String execute() throws IOException {

	// 多张图片上传的方法
	HttpServletRequest request = ServletActionContext.getRequest();
	// 获取要保存文件夹的物理路径(绝对路径)
	String path = request.getRealPath("/upload");
	for (int i = 0; i < file.length; i++) {
		// 测试此抽象路径名表示的文件或目录是否存在。若不存在,创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
		if (!file[i].exists()) {
			file[i].mkdirs();
		}
		//解决文件名重复的问题 :String a = UUID.randomUUID().toString() + this.fileFileName[i];
		String a = UUID.randomUUID().toString() + this.fileFileName[i];
		InputStream is = new FileInputStream(file[i]);
		OutputStream os = new FileOutputStream(new File(path, a));
		byte[] buffer = new byte[200];
		int len = 0;
		while ((len = is.read(buffer)) != -1) {
			os.write(buffer, 0, len);
		}
		os.close();
		is.close();
	}
	return Action.SUCCESS;
}

public File[] getFile() {
	return file;
}

public void setFile(File[] file) {
	this.file = file;
}

public String[] getFileFileName() {
	return fileFileName;
}

public void setFileFileName(String[] fileFileName) {
	this.fileFileName = fileFileName;
}

public String[] getFileContentType() {
	return fileContentType;
}

public void setFileContentType(String[] fileContentType) {
	this.fileContentType = fileContentType;
}

}

4:Struts.xml配置文件

在这里插入图片描述
5:启动服务,即可运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值