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