<p>作者:yan </p>
<p> </p>
<p>Action代码:</p>
<p><textarea cols="50" rows="15" name="code" class="java">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;
}
}
</textarea> </p>
<p> </p>
<p>xml配置:</p>
<p><textarea cols="50" rows="15" name="code" class="xhtml"> <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></textarea> </p>
<p> </p>
<p>页面调用:</p>
<p>如:</p>
<p><span><a class=" " title="http://localhost:8080/hims/importdata/base/downloadAction.do?relativePath=/userfiles/branchComInvWeekly&fileName=济南20110531184126875.xls" href="http://localhost:8080/hims/importdata/base/downloadAction.do?relativePath=/userfiles/branchComInvWeekly&fileName=%E6%B5%8E%E5%8D%9720110531184126875.xls"><a href="base/downloadAction.do?relativePath=/userfiles/branchComInvWeekly&amp;fileName=济南20110531184126875.xls">下载</a></a></span></p>
分享到:
相关推荐
简单的下载文件代码,下载中文附件,下载已经存在的文件方案介绍
Struts实现文件下载中文乱码解决方案收藏
注:本程序分两部分上传,需要两个文件同时才能解压。...本程序尽量包含了开发当中遇到的一些问题及解决方案。同时欢迎广大网友到作者的群内讨论交流。 本程序适合于想学习JAVA技术或框架技术的初学者阅读。
高效的Model 2编程并不是一项简单的任务,开发人员经常自己发现难于找到很多问题的最佳解决方式。本书是Struts项目的完全指南,引导开发人员理解概念、设计和实现方式。虽然它由Struts应用程序的基础开始并深入讲解...
注:本程序分两部分上传,需要两部分同时才能解压。...本程序尽量包含了开发当中遇到的一些问题及解决方案。同时欢迎广大网友到作者的群内讨论交流。 本程序适合于想学习JAVA技术或框架技术的初学者阅读。
Struts 是Apache 软件基金下Jakarta 项目子项目。除Struts 之外, Jakarta 还有其他成功的开源 产品,包括Tomcat, Ant, ...点,但绝不会将你锁定在一个只有你们团队才懂的专有解决方案上。 开源软件对所有人都是双赢的。
11.11.2 解决方案 472 11.11.3 工作原理 472 11.12 使用GORM查询 475 11.12.1 问题 475 11.12.2 解决方案 475 11.12.3 工作原理 475 11.13 创建自定义标记 477 11.13.1 问题 477 11.13.2 解决方案...
11.11.2 解决方案 472 11.11.3 工作原理 472 11.12 使用GORM查询 475 11.12.1 问题 475 11.12.2 解决方案 475 11.12.3 工作原理 475 11.13 创建自定义标记 477 11.13.1 问题 477 11.13.2 解决方案...
3.3Struts-config.xml配置文件讲解 3.4struts中文问题","struts国际化问题"??终极解决方案 9 3.5为 Web 服务构建 Struts 应用程序 9 3.6Struts标记库是如何工作的 9 3.7Struts 9 3.8struts简单例子的分析(含代码...
2.3.2. Servlet 解决方案.................................................................................................44 2.3.3. Servlet 框架............................................................
struts2中文乱码解决方案 1.在struts.xml文件中加入一个常量配置: <struts> <constant name="struts.i18n.encoding" value="GBK"/> </struts> 2.在web.xml文件中struts的filter之前加入 <filter> ...
2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. ...
Spring提供了一种轻量级的解决方案,用于建立“快装式企业应用”。在此基础上,Spring还提供了包括声明式事务管理,RMI或Web Services远程访问业务逻辑,以及可以多种方法进行的持久化数据库地解决方案。另外,...
2.3.2. Servlet 解决方案.................................................................................................44 2.3.3. Servlet 框架.............................................................
spring3.2框架是一个轻量级的解决方案和一个潜在的 一站式为构建企业级应用程序。 然而, spring是模块化的,允许你只使用那些你需要的部分, 无需引入其余。 您可以使用IoC容器, Struts在上,但是你也可以只使用 ...
在此基础上,Spring还提供了包括声明式事务管理,RMI或Web Services远程访问业务逻辑,以及可以多种方法进行的持久化数据库地解决方案。另外,Spring还有一个全功能的 MVC框架,并能透明的把 AOP 集成到你的软件中去...
以上是Spring+Hibernate将文件二进制数据持久化到数据库的解决方案,而Struts通过将表单中file类型的组件映射为ActionForm中类型为org.apache.struts.upload. FormFile的属性来获取表单提交的文件数据。 工程...
Liferay 是一个完整的门户解决方案,基于J2EE的应用,使用了EJB以及JMS等技术,前台界面部分使用Struts MVC 框架,基于XML的portlet配置文件可以自由地动态扩展,使用了Web服务来支持一些远程信息的获取,使用 ...
中文乱码问题及其解决方案 使用responseText处理返回的普通文本信息 实战技巧:数据校验 实战技巧:级联菜单 实战技巧:条目内容 实战技巧:级联下拉列表 使用responseXML处理返回的XML信息 实战技巧:获取元对象...