前端页面文件代码,一定要有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类里面。
本文介绍了前端页面文件上传的实现方式及后端接收处理文件的方法,包括上传表单的配置、文件保存路径设置、文件类型验证、大小限制以及错误处理机制。
1980

被折叠的 条评论
为什么被折叠?



