Struts2 文件上传控制:限制类型与大小

需积分: 9 0 下载量 9 浏览量 更新于2024-08-18 收藏 265KB PPT 举报
本文主要介绍了如何在Struts2框架中对文件上传进行控制,包括限制文件类型和大小,以及单文件上传的实现步骤。 在Struts2中,文件上传是通过拦截器(Interceptor)来实现的。在描述中提到的配置部分,我们可以看到一个名为"userload"的Action配置,它引用了名为"fileUpload"的拦截器,并设置了两个参数:"allowedTypes"用于指定允许上传的文件类型,这里是"image/pjpeg",即JPEG图片;"maximumSize"则是限制上传文件的最大大小,这里是1024000000字节,即100MB。同时,这个Action还引用了默认的拦截器栈"defautStack",确保了整个请求处理流程的正常进行。如果上传失败,结果会被定向到"/upload.jsp",成功则跳转到"/ok.jsp"。 文件上传的原理通常是用户通过表单提交包含二进制数据的文件,表单的`enctype`属性必须设置为"multipart/form-data"。在Struts2中,可以使用`<s:form>`标签和`<s:file>`标签来创建这样的表单,例如: ```html <s:form action="userload!geta.action" method="post" enctype="multipart/form-data"> <table border="1" align="center"> <s:file name="doc" label="相片"></s:file> <s:submit value="确定" align="center"></s:submit> </table> </s:form> ``` 在Action类中,我们需要定义对应的字段来接收上传的文件。对于单文件上传,通常会有一个`File`类型的字段(如`doc`)和一个`String`类型的字段(如`docFileName`)来保存文件内容和原始文件名。在处理上传的Action方法中,首先获取上传文件的保存路径,然后创建一个新的文件名,接着使用`FileUtils.copyFile()`方法将上传的临时文件复制到目标位置。 为了实现对文件类型的控制,Struts2提供了`allowedTypes`参数,这里配置为"image/pjpeg",意味着只有JPEG图片能被上传。对于文件大小的控制,`maximumSize`参数用来限制上传文件的大小,超过该限制的文件将被拦截并返回错误。 Struts2提供了方便的文件上传功能,可以通过配置拦截器来设定上传的规则,同时在Action中处理文件的保存逻辑,确保了上传过程的安全性和可控性。在实际应用中,根据需求可以灵活调整这些配置,以满足不同场景下的文件上传需求。