struts2文件上传、下载、防止重复提交

Struts2 文件上传
Struts2 文件上传基于 Struts2 拦截器实现; Struts2 文件上传使用的是 fileupload 组件; Form 配置 enctype="multipart/form-data"; Struts2 获取上传文件:name (name 是文件表单的 name) Struts2 获取上传文件名:name+FileName; Struts2 获取上传文件的类型:name+ContentType;
配置文件的大小及类型
<paramname="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg</param> <paramname="maximumSize">81101</param>
<s:fielderror></s:fielderror>
大文件上传
Struts2 文件上传大小默认是 2M;
<constantname="struts.multipart.maxSize"value="20000000"></constant>
多文件上传时,对应的属性变成数组,循环上传。

Struts2文件下载
返回的是文件流
<result type="stream">
        <param name="contentDisposition">attachment;filename=${fileName}</param>
</result>
return InputStreamgetInputStream();
示例:
    private String fileName;

    public String getFileName() throws Exception{
        fileName=new String(fileName.getBytes(),"ISO8859-1");
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
    
    public InputStream getInputStream()throws Exception{
        File file=new File("C:/例1.jpg");
        this.fileName="例1";
        return new FileInputStream(file);
    }

使用<s:token/>标签防重复提交
<s:token></s:token> :加在 form 里; 使用 token 拦截器:
         <interceptor-ref name="token"></interceptor-ref>
         <interceptor-ref name="defaultStack"></interceptor-ref>
         <result name="invalid.token">/student.jsp</result>
在 struts.xml 里配置,假如出现重复提 交,则直接回到页面;
<s:actionerror/>:在页面上显示错误信息;
使用 tokenSession 拦截器防重复提交
tokenSesssion 拦截器直接无视重复提交的请求;
    <interceptor-refname="tokenSession"></interceptor-ref>
<interceptor-refname="defaultStack"></interceptor-ref>

上一篇:Struts2 005 Rce 漏洞复现&分析


下一篇:命令执行与反序列化(二)