zoukankan      html  css  js  c++  java
  • Struts2文件下载

    我们在学习Servlet和HTTP协议时已经可以实现文件下载,即写content-disposition头即可,struts2的实现原理也是这个,但是提供了更好的封装性;

    struts2的stream结果类型专门用于实现文件下载;

    (1)struts.xml中配置stream结果类型,并配置contentType、contentDisposition、bufferSize参数即可,模板:

    <action name="download" class="">

    <result type="stream" name="success">

    <param name="contentType"></param>

    <param name="contentDisposition">attachment;filename=""</param>

    <param name="bufferSize">4096</param>

    </result>

    </action>

    (2)在Action中创建public InputStream getInputStream()throws Exception;方法,此方法用于获得下载文件的输入流;

    package org.download.action;


    import java.io.InputStream;


    import org.apache.struts2.ServletActionContext;


    import com.opensymphony.xwork2.ActionSupport;


    public class DownloadAction extends ActionSupport {

    public InputStream getInputStream()throws Exception{

    return ServletActionContext.getServletContext().getResourceAsStream("/WEB-INF/upload/1.jpg");

    }

    public String execute()throws Exception{

    return SUCCESS;

    }

    }

    struts.xml

                <action name="download" class="org.download.action.DownloadAction">
    <result type="stream" name="success">
    <param name="contentType">image/jpeg</param>
    <param name="contentDisposition">attachment;filename="1.jpg"</param>
    <param name="bufferSize">4096</param>
    </result>
    </action>

    就可以完成下载;

  • 相关阅读:
    JavaScript OOP 思想
    单页界面和 AJAX 模式
    jQuery 的 ready 函数是如何工作的?
    Dojo系列教程
    谈谈javascript语法里一些难点问题(一)
    2014年总结、2015年的小计划--女生程序员小感想
    Android名词解释
    【JS】defer / async
    关于对defer的理解.
    defer和async的区别
  • 原文地址:https://www.cnblogs.com/toge/p/6114706.html
Copyright © 2011-2022 走看看