Struts2 文件上传、下载

文章目录

Commons-FileUpload组件:
Commons是Apache开放源代码组织的一个Java子项目,其中FileUpload是用来处理HTTP文件上传的子项目。
Commons-FileUpload组件特定:
使用简单:可以方便的嵌入到jsp文件中,编写少量的代码即可实现文件上传功能。
能够全称控制上传内容
能够对上传文件大小,类型进行控制

注意: 上传文件的表单必须设置form属性enctype=”multipart/form-data” ,method设置为post

配置参数

设置文件大小和文件类型限制

我们先来看一下文件上传所使用的拦截器:

<interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/>


配置action

<action name="login" class="collaction.LonginAction">
    <result name="success">home.jsp</result>
    <result name="error" >login.jsp</result>
    <result name="input" >login.jsp</result>
    <!-- 配置文件上传拦截器 -->
    <interceptor-ref name="fileUploaod">
        <param name="maximumSize">512000</param>
        <param name="allowedTypesSet">image/jpge,image/gif</param>
    </interceptor-ref>
    <!-- 引入默认拦截器 -->
    <interceptor-ref name="defaultStack"></interceptor-ref>
</action>

文件下载

直接上代码

<package name="default" namespace="/" extends="struts-default">
    <action name="fileDown" class="collaction.FIleDownAction">
        <param name="inputPath">/upload</param>
        <result name="success" type="stream">
            <param name="conetntType">application/octet-stream</param><!-- 文件类型,这里采用通用二进制 -->
            <param name="inputName">inputStream</param> <!-- IO流属性名 -->
            <param name="contentDisposition">attachment;filename="${FileName}"</param><!-- 询问打开方式 -->
            <param name="bufferSize">4096</param><!-- 缓冲区大小  -->
        </result>
    </action>
</package>
public class FIleDownAction extends ActionSupport{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private String inputPath;//文件路径
    private String FileName;//文件名
    private InputStream inputStream;
    private String conetntType;//文件类型
    public String getInputPath() {
        return inputPath;
    }
    public void setInputPath(String inputPath) {
        this.inputPath = inputPath;
    }
    public String getFileName() {
        return FileName;
    }
    public void setFileName(String fileName) {
        FileName = fileName;
    }
    public InputStream getInputStream() throws FileNotFoundException {
        String path = ServletActionContext.getServletContext().getRealPath(inputPath);
        return new BufferedInputStream(new FileInputStream(path+"\\"+FileName));
    }
    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }
    public String getConetntType() {
        return conetntType;
    }
    public void setConetntType(String conetntType) {
        this.conetntType = conetntType;
    }
    public static long getSerialversionuid() {
        return serialVersionUID;
    }
    @Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        return super.execute();
    }
}
原文链接:,转发请注明来源!

发表评论