struts2文件上传模块

本文介绍了前端页面文件上传的实现方式及后端接收处理文件的方法,包括上传表单的配置、文件保存路径设置、文件类型验证、大小限制以及错误处理机制。

前端页面文件代码,一定要有enctype="multipart/form-data"

<form method="post" enctype= "multipart/form-data" action="upload2" > <input type="file" name="filedata" /> <input type="submit" value="上传" /> </form>

上传结果对象FileUploadResult.java

public class FileUploadResult { public int getState() { return state; } public void setState(int state) { this.state = state; } public String getAbsoluteName() { return absoluteName; } public void setAbsoluteName(String absoluteName) { this.absoluteName = absoluteName; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } private int state; private String absoluteName; private String fileName; }

uploadFile函数

private FileUploadResult uploadFile(){ FileUploadResult fileUpResult = new FileUploadResult(); SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); String dirName = df.format(new Date()); //文件保存目录路径 String savePath = request.getSession().getServletContext().getRealPath("/") + "upload" + "/" + dirName + "/"; //文件保存目录URL String saveUrl = request.getContextPath() + "/" + "upload" + "/" + dirName + "/"; //定义允许上传的文件扩展名 String[] fileTypes = new String[]{"xls"}; //最大文件大小20M long maxSize = 20000000; if(request instanceof MultiPartRequestWrapper){ MultiPartRequestWrapper temp=(MultiPartRequestWrapper)request; String[] fileNames = temp.getFileNames("filedata"); File[] files=temp.getFiles("filedata"); if(!files[0].isFile()){ setErr("请选择文件"); return fileUpResult; } String fileExt = fileNames[0].substring(fileNames[0].lastIndexOf(".") + 1).toLowerCase(); df = new SimpleDateFormat("yyyyMMddmmss"); String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt; if(files[0].length() > maxSize){ setErr("文件大于20M被拦截"); return fileUpResult; } if(!Arrays.<String>asList(fileTypes).contains(fileExt)){ setErr("请上传xls格式的文件"); return fileUpResult; } //目录不存在则创建 File saveDir = new File(savePath); if(!saveDir.exists()){ saveDir.mkdirs(); } if(!files[0].renameTo(new File(savePath + newFileName))){ setErr("上传失败"); return fileUpResult; } fileUpResult.setState(1); fileUpResult.setAbsoluteName(savePath + newFileName); fileUpResult.setFileName(newFileName); return fileUpResult; } setErr("没有文件"); return fileUpResult; }

在execute里面调用uploadFile函数就可以实现文件上传了, 返回上传的一些信息保存在 FileUploadResult类里面。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值