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>

    就可以完成下载;

  • 相关阅读:
    Privacy Policy
    privacy
    将一个无法一次读入内存的大文件排序
    java实现二叉树的非递归遍历
    java静态方法同步问题
    关于java静态方法继承问题
    Android 代码写布局
    Android自定义ImageView实现手势放大图片的控件,无需依赖任何第三方。
    Gradle版本更换问题
    Android的AlertDialog实现圆角边框
  • 原文地址:https://www.cnblogs.com/toge/p/6114706.html
Copyright © 2011-2022 走看看