<!-- 文件下载 --><action name="download" class="cn.action.demo2.DownloadAction"><!-- 返回 流结果 --><result type="stream"><!-- inputName 用于指定 返回输入流的方法名 默认值  inputStream --><!-- targetFile 需要在Action 中提供 getTargetFile方法,返回值必须InputStream --><param name="inputName">targetFile</param><!-- 配置ContentType --><!-- ${contentType}从Action中 getContentType 获得文件类型 --><param name="contentType">${contentType}</param><!-- 设置响应数据 以附件形式打开  --><param name="contentDisposition">attachment;filename=${filename}</param></result></action>

public class DownloadAction extends ActionSupport{// 接收文件名private String filename;@Overridepublic String execute() throws Exception {// 解决请求参数中文件名get乱码filename = new String(filename.getBytes("ISO-8859-1"),"utf-8");return SUCCESS;}public String getFilename() throws IOException {// 对文件名 进行编码,用于附件下载String agent = ServletActionContext.getRequest().getHeader("user-agent");System.out.println(agent);if(agent.contains("Firefox")){// 火狐浏览器 Base64编码return "=?UTF-8?B?"+new BASE64Encoder().encode(filename.getBytes("utf-8"))+"?=";}else{// IE及其它浏览器--- URL编码return URLEncoder.encode(filename, "utf-8");}}public void setFilename(String filename) {this.filename = filename;}// getTargetFile方法名 因为配置 <param name="inputName">targetFile</param>public InputStream getTargetFile() throws IOException{// 获得download 目录 绝对路径ServletContext servletContext = ServletActionContext.getServletContext();String downloadDir = servletContext.getRealPath("/download");return new BufferedInputStream(new FileInputStream(new File(downloadDir, filename)));}// <param name="contentType">${contentType}</param>public String getContentType(){// 文件类型 由文件名动态获得ServletContext servletContext = ServletActionContext.getServletContext();// 查找tomcat/conf/web.xml return servletContext.getMimeType(filename);}}

转载于:https://www.cnblogs.com/52hadoop/p/5642017.html

struts2文件下载相关推荐

  1. Struts2之struts2文件下载详解

    一.学习案例:通过在downloadfile.jsp页面点击"下载文件",查看文件是否可以成功下载. 二.案例分析:struts2文件下载只需简单配置即可. a)先在下载页面(do ...

  2. struts2文件下载及 param name=inputNameinputStream/param的理解

    struts.xml文件配置: [html] view plaincopy <span style="font-size:16px;"><?xml version ...

  3. struts2文件下载出现Can not find a java.io.InputStream with the name的错误

    今天在用struts2就行文件下载时出现如下错误: Servlet.service() for servlet default threw exception java.lang.IllegalArg ...

  4. java struts2 文件下载,Struts2文件下载

    一个简单的利用struts2做文件下载的demo-- 首先配好struts: web.xml xmlns="http://java.sun.com/xml/ns/j2ee" xml ...

  5. Struts2 文件下载

    配置xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC& ...

  6. linux struts2 乱码,遇到的Struts2文件下载乱码问题

    今天用struts2写文件的下载,出现了文件名为中文时有乱码的问题.参考了很多网上和书上的方法但是不奏效.以下是我的解决方法,虽然很简单直白,但是解决问题了,供大家参考. public String ...

  7. Struts2学习笔记(十七) 文件下载(File Download)

    前面我们刚刚学完文件上传,那么我们就接着来看和文件上传相对应的文件下载吧.对于文件上传而言,文件下载实现起来要简单的多.通常我们可以直接将一个超链接的地址指向我们想要给用户下载的资源即可.但是如果这些 ...

  8. Struts2 的stream result用法

    2019独角兽企业重金招聘Python工程师标准>>> <action name="download" class="com.unmi.actio ...

  9. 【struts2+hibernate+spring项目实战】数据报表jxl及生成excel(ssh项目实战)

    一.数据报表jxl jxl是一款java读写office--Excel文件的工具.通过java程序进行Excel文件的读写操作. 操作Excel首先应该明确操作过程中java针对Excel文件的对象分 ...

最新文章

  1. ASP:Literal控件用法
  2. CentOS 7.x使用yum快速安装或升级PHP 5.6
  3. 《Android系统源代码情景分析》一书正在连载中
  4. pip:成功解决pip下载时速度超慢(pip下载慢)的几种方法
  5. 【POJ - 2533】Longest Ordered Subsequence(四种方法解决最长上升子序列 含二分优化版本)
  6. Exceeded maximum number of retries. Exceeded max scheduling attempts 3 for instance
  7. 苹果官方指南:Cocoa框架(2)(非原创)
  8. readonly和disabled的区别
  9. 软件工程项目需求分析
  10. Java基础——集合List+Set+泛型+Map
  11. 百度干净云2.0无限速加速破解版(附怎么用教程)
  12. 串口硬盘如何应用于并口硬盘计算机,串口硬盘和并口硬盘如何区别?
  13. 兆,字节,位等单位转换
  14. matlab | 图像处理工具箱
  15. 生成Base64编码格式的二维码图片(添加url地址图片logo)
  16. 多项式曲线拟合之最小二乘法推导
  17. 如何裁剪视频画面尺寸?快把这些方法收好
  18. AI表情包生成器来了!给AI喂了96万个表情包文案,做出的图能接地气吗?
  19. .netcore-线程池饿死问题分析(CPU空闲,并发量大时请求超时)
  20. 经典推荐——计算机科学殿堂的知识瑰宝

热门文章

  1. python 基础 --数字、列表、元组、字典、字符串
  2. python人工智能学习笔记_[Python] 人工智能与自然语言处理学习笔记(1)
  3. String与Integer相互转换
  4. 粒子群matlab工具箱,科学网—PSO粒子群优化算法Matlab工具箱 - 白途思的博文
  5. java string对象名称_java中常见对象——String
  6. hht时频谱 matlab 乱序_MATLAB信号频谱分析FFT详解
  7. oracle11g调整表空间和临时表空间大小
  8. css定位能用android,绝对的CSS定位显示android html上的空白区域
  9. java中一级缓存二级缓存_[Java] hibernate 一级缓存和二级缓存
  10. 用命令行连接mysql文件时出现错误_MySQL使用cmd命令窗口安装错误信息提示的解决方法...