作者:yan

Action代码:

package com.xxx.base.view.action; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import com.ruizcon.base.util.MyException; public class DownloadAction extends BaseAction { private String fileName; private String relativePath; public void setFileName(String fileName) throws UnsupportedEncodingException { /* * 对fileName参数进行UTF-8解码,注意:实际进行UTF-8解码时会使用本地编码。 * 这里使用request.setCharacterEncoding解码无效. * 只有解码了getDownloadFile()方法才能在下载目录下正确找到请求的文件 * */ String str=new String(fileName.getBytes("ISO8859-1"),"utf-8"); this.fileName=str; } /** * @getFileName * 此方法对应的是struts.xml文件中的: * <param >attachment;filename="${fileName}"</param> * 这个属性设置的是下载工具下载文件时显示的文件名, * 要想正确的显示中文文件名,我们需要对fileName再次编码 * 否则中文名文件将出现乱码,或无法下载的情况 * @return * @throws UnsupportedEncodingException * @author XieYanZhou(Yan) * @date 2011-6-1 * @version v1.0 */ public String getFileName() throws UnsupportedEncodingException{ String str= new String(fileName.getBytes(), "ISO8859-1"); return str; } public void setRelativePath(String relativePath) throws UnsupportedEncodingException { //this.relativePath = relativePath; String str=new String(relativePath.getBytes("ISO8859-1"),"utf-8"); this.relativePath=str; } /** * * @getDownloadFile * 此方法的命名是有规定的,对应的是struts.xml文件中的: * <param >downloadFile</param> * 返回下载文件的流,可以参看struts2的源码 * @return * @author XieYanZhou(Yan) * @date 2011-6-1 * @version v1.0 */ public InputStream getDownloadFile(){ /*String baseRealPath=this.getSession().getServletContext().getRealPath(""); String path = baseRealPath + relativePath + "//" + this.fileName; path=path.replaceAll("/", ""); FileInputStream fis = new FileInputStream(path); return fis;*/ return this.getServletContext().getResourceAsStream(relativePath +"/"+ fileName); } @Override public String execute() throws Exception { return SUCCESS; } }

xml配置:

<action name="downloadAction" class = "downloadAction"> <result name="success" type="stream"> <!-- <param name="contentType">application/excel,application/vnd.ms-excel</param> --> <param name="contentDisposition">attachment;filename="${fileName}"</param> <param name="inputName">downloadFile</param> <param name="bufferSize">4096</param> </result> </action>

页面调用:

如:

<a href="base/downloadAction.do?relativePath=/userfiles/branchComInvWeekly&amp;fileName=济南20110531184126875.xls">下载</a>

struts2多文件动态下载及中文解决方案相关推荐

  1. ios动态下载多种中文字体

    引言 在今年 WWDC 的内容公开之前,大家都以为 iOS 系统里面只有一种中文字体.为了达到更好的字体效果,有些应用在自己的应用资源包中加入了字体文件.但自己打包字体文件比较麻烦,原因在于: 1.字 ...

  2. sharepoint 中用自带的download.aspx实现文件的下载,中文文件名编码的问题

    //下面代码中的主要是为了将数据绑定到repeater上,同时实现文件的下载,其中dr[3]中的路径绑定的是下载路径,用到了sharepoint中自带的download.aspx下载页面,只要将文件的 ...

  3. LVGL学习之路——基于lv_lib_freetype库的TTF字体文件动态加载中文字体(阿里普惠字体)

    前言   在学习lvgl中,在英文字体上很多人都用过,但是中文字体往往需要靠取模去实现.那么我就在想,如何像windows那样加载动态的字体呢,这样想做多大字体都行.于是就开始了字体的移植. 什么是t ...

  4. JavaWeb之Servlet学习-----实现文件动态下载功能 手写servlet 手动构建web程序

    说明: 本次的任务是将等待下载的文件放在非Web目录下(在web.xml中配置),使客户端无法直接访问待下载 文件.然后通过一个servlet进行中转,如果带下载的文件存在,通过FileInputSt ...

  5. struts2的文件上传和文件下载

    实现使用Struts2文件上传和文件下载: 注意点: (1)对应表单的file1和私有成员变量的名称必须一致 <input type="file" name="fi ...

  6. 通过js跳转url下载包含中文的文件乱码问题解决方案(java)

    通过js跳转url下载包含中文的文件乱码问题解决方案(java) 参考文章: (1)通过js跳转url下载包含中文的文件乱码问题解决方案(java) (2)https://www.cnblogs.co ...

  7. php header下载中文名称,PHP Header下载文件在IE文件名中文乱码问题

    解决PHP Header下载文件在IE文件名中文乱码有两种常见的,一种是是把页面编码改成utf8,另一种是对中文url进入urlencode编码就可以解决了. 解决方案一,我的页面是utf-8编码,代 ...

  8. 关于使用DataGrid的ButtonColumn,动态添加DataGrid列,实现不定列n个文件的下载功能...

    一.使用DataGrid的ButtonColumn,动态添加DataGrid列,实现不定列n个文件的下载功能 在aspx页面中的代码如下: <asp:datagrid id="User ...

  9. 【struts2】文件上传下载—struts2实现

    struts2实现上传下载时要用到的jar包: UploadAction.java(fileupload.action) package com.rczp.action;import java.io. ...

最新文章

  1. vivado 2018与modelsim的联合仿真
  2. 逻辑回归模型(Logistic Regression, LR)基础
  3. Shell脚本中函数的定义和调用笔记
  4. java显示长度和第一个字符_从Java字符串中以长度1的字符串返回的第一个字母的最佳方法是什么?...
  5. 中小企业大数据应用之道:思维在于借力
  6. 在国外千万不要以为别人都听不懂中文
  7. c语言栈指针移动原理,C指针原理(4)-ATamp;T汇编
  8. hadoop输出统计
  9. IE中getElementById的Bug
  10. Atitit golang开发环境搭建 目录 1. 编辑helo.go 1 1.1. 调试编译 1 2. Ide选择liteide 2 3. 问题解决 2 4. 附录 2 4.1. Go语言标准库常
  11. 友善之臂Mini2440NORflash bootloader烧写详述---亲测可用
  12. Maven中的dependencyManagement 详解
  13. 简单计算经纬度表示的距离
  14. m3u8加密文件原理及下载脚本
  15. 用Maxima画出一些有趣的图
  16. 斯坦福公布3D街景数据集:2500万张图像,8个城市模型 | 下载
  17. 用MATLAB仿真DSB调制
  18. VMwarenbsp;vSpherenbsp;ESXiamp;nb…
  19. RFID出入库管理是如何实施的
  20. 过年不让放炮,我用Python实现了1000响大地红的特效

热门文章

  1. QT中动态库和静态库使用
  2. MFC中Windows窗口消息循环及多线程之间关系
  3. MFC笔记2(控件位置调整)
  4. GDI C++ 位图的绘制
  5. dotNetCharting使用总结
  6. git add后取消_git 必看,各种撤销操作
  7. pythonpil模块安装_centos 安装python PIL模块
  8. js 延迟几秒执行_深入研究 Node.js 的回调队列
  9. PHP中strtotime函数有范围吗,PHP中使用strtotime函数注意事项
  10. python中pow_python – 为什么pow(x,y)的时间复杂度为O(1),而x ** y为O(n)?