struts2实现简单文件上传
struts2 在内部已经帮我们做了很多封装的工作,我们只需要简单的写一些配置即可。
1 表单页面
<form action="${pageContext.request.contextPath }/fileupload" method="post" enctype="multipart/form-data"> <input type="file" name="filesrc" ><br> <input type="submit" value="提交"> </form>
注意:要记住input type=file 的 name属性值,后台会用到
2 FileUploadAction 类来处理文件上传,将上传来的文件存放到upload 文件夹里
public class FileUploadAction extends ActionSupport { private File filesrc; private String filesrcFileName; private String filesrcContentType; public File getFilesrc() { return filesrc; } public void setFilesrc(File filesrc) { this.filesrc = filesrc; } public String getFilesrcFileName() { return filesrcFileName; } public void setFilesrcFileName(String filesrcFileName) { this.filesrcFileName = filesrcFileName; } public String getFilesrcContentType() { return filesrcContentType; } public void setFilesrcContentType(String filesrcContentType) { this.filesrcContentType = filesrcContentType; } public String uploadFile(){ String path = ServletActionContext.getServletContext().getRealPath("/upload"); File destFile = new File(path, filesrcFileName); try { FileUtils.copyFile(filesrc, destFile); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } return SUCCESS; } }
注意:所有与上传文件有关的域变量命名规则开始要使用 form 表单中的name属性值。比如要有一个文件对象,就是filesrc,如果想知道文件名,就是:filesrcFileName,其中后面的FileName是固定的。至此就可以将文件存放到upload文件夹中。
当然此处没有设置文件大小、类型等判断。
3 action的配置,和一般的action配置相同。就不写了。可以参考之前的博文。struts2开发流程及配置,域对象对数据存储的3种方式
4 使用配置文件设置上传文件类型,上传文件大小。修改配置文件struts.xml,主要的类:FileUploadInterceptor,要使用的拦截器是:fileUploadStack
<action name="fileupload" class="com.baidu.action.fileupload.FileUploadAction" method="uploadFile"> <interceptor-ref name="fileUpload"> <param name="allowedExtensions">text,xml</param> <param name="maximumSize">1024</param> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action>
学习过程中,难免出错。如果您在阅读过程中遇到不太明白,或者有疑问。欢迎指正...联系邮箱crazyCodeLove@163.com
如果觉得有用,想赞助一下请移步赞助页面:赞助一下