博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2学习笔记--使用Response下载文件和Struts2的StreamResult文件下载
阅读量:6910 次
发布时间:2019-06-27

本文共 2990 字,大约阅读时间需要 9 分钟。

  • 使用Response下载文件,servlet中的文件下载是通过流来实现的

      我在webRoot文件夹下新建了一个文件夹from,里边放了一张图片,这里就以下载这张图片为例:download.jsp很简单,只有一个a标签.

    DownloadAction如下:

package com.wang.action;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.Action;public class DownloadAction {    public String execute() throws IOException{        //获取response和request        HttpServletRequest request=ServletActionContext.getRequest();        HttpServletResponse response=ServletActionContext.getResponse();        //获取要下载的文件夹路径        String path=request.getRealPath("/from");        File file=new File(path,"IMG_0968.jpg");         response.setContentLength((int)file.length());        response.setCharacterEncoding("utf-8");        //此contenttype意思是不知道文件类型,使用二进制流的方式传输        response.setContentType("application/octet-stream");        //注意,filename=后面的内容不加引号,我第一次加了引号,结果出错        response.setHeader("Content-Disposition", "attachment;filename=IMG_0968.jpg");                InputStream is=new FileInputStream(file);        //通过response获得输出流        OutputStream os=response.getOutputStream();        byte[] b=new byte[1024];        int len=0;        while((len=is.read(b))!=-1){            os.write(b, 0, len);        }        is.close();        os.close();        System.out.println("success download");        //注意:这里返回的是null        return null;    }}
DownloadAction

    这是使用servlet的reqsponse下载文件的方式,注意在action中,返回值是null,配置文件中不需要result标签,download.jsp和struts.xml省略.

  • 使用Struts2的StreamResult进行文件下载.

    webRoot文件夹下新建了一个文件夹from,里边放了两张图片分别是IMG_0968.jpg和IMG_0975.jpg.以下载这两张图片为例:

    downLoad.jsp页面:

    StreamDownloadAction页面:

package com.wang.action;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class StreamDownload extends ActionSupport{    private String fileName;    @Override    public String execute() throws Exception {        return SUCCESS;    }        public InputStream getInputStream() throws IOException{                HttpServletRequest request = ServletActionContext.getRequest();        String path=request.getRealPath("/from");        InputStream is=new FileInputStream(new File(path,fileName));        return is;    }    public String getFileName() {        return fileName;    }    public void setFileName(String fileName) {        this.fileName = fileName;    }    }
StreamDownloadAction

    struts.xml页面:

InputStream
attachment;fileName=${fileName}

 

转载地址:http://vrycl.baihongyu.com/

你可能感兴趣的文章
PHP整理笔记五目录与文件
查看>>
在ASP.net中使用OWC绘制统计图表
查看>>
【BZOJ 2440】[中山市选2011]完全平方数
查看>>
SVN学习总结(1)——SVN简介及入门使用
查看>>
嵌入式linux开发uboot移植(三)——uboot启动过程源码分析
查看>>
zabbix-agentd 的配置
查看>>
网卡arp的报错修复
查看>>
我的友情链接
查看>>
怎样在Powerpoint中剪裁视频或音频ppt背景素材
查看>>
maptail
查看>>
js压缩图片
查看>>
Java8 十大新特性详解
查看>>
BZOJ3152[Ctsc2013]组合子逻辑——堆+贪心
查看>>
大型网站技术架构(四)网站的高性能架构
查看>>
添加非Oracle用户到dba, oinstall组
查看>>
我的友情链接
查看>>
OpenStack Swift Account Reaper
查看>>
How Linux Works
查看>>
Redis应用学习——Redis Cluster的集群伸缩
查看>>
pfsense远程管理
查看>>