仅使用struts2限制上载文件操作以进行自定义文件扩展

时间:2011-09-15 08:44:10

标签: struts2

我想限制文件上传操作仅限于Struts2中扩展名为.key的文件。如果我在struts.xml中的fileUpload拦截器中将文件类型设置为 application / octet-stream ,它允许上传所有具有上述内容类型的文件而不考虑扩展名,但我的要求是将扩展名限制为 .KEY

2 个答案:

答案 0 :(得分:1)

有两种方法可以实现上述目标。 以声明方式和编程方式,以声明方式限制文件类型逗号分隔的allowedTypes列表可以指定为fileUpload拦截器参数

<action name="fileUpload" class="com.example.UploadAction">
    <interceptor-ref name="basicStack"/>
    <interceptor-ref name="fileUpload">
        <param name="allowedTypes"></param>
    </interceptor-ref> 
    <interceptor-ref name="validation"/>
    <interceptor-ref name="workflow"/>

    <result name="success"</result>
</action>

更灵活的方法,避免配置Interceptor的需要是以编程方式检查它 以编程方式限制文件类型意味着使用通过setXContentType(String contentType)方法传递给Action类的信息。

答案 1 :(得分:0)

我得到了答案。您需要在fileUpload拦截器中使用另一个名为“allowedExtensions”的param类型。在逗号分隔值中输入您愿意允许的所有扩展名。您还可以为特定错误添加自定义消息。请参考Struts official site for file upload interceptor。以下是语法。

<interceptor-ref name="fileUpload">
    <param name="allowedExtensions">key</param>
</interceptor-ref>