- 浏览: 45222 次
- 性别:
最新评论
strut.xml:
<action name="download" class="com.telewave.policesystemweb.szrk.DownloadAction" >
<result name="success" type="stream">
<!-- 下载文件类型定义 -->
<param name="contentType">application/octet-stream</param>
<!-- 下载文件输出流定义 -->
<param name="inputName">inputStream</param>
<!-- 下载文件处理方式 -->
<param name="contentDisposition">attachment;filename="${downfilename}"</param>
<!-- 下载文件的缓冲大小 -->
<param name="bufferSize">4096</param>
</result>
</action>
java代码(可见附件):
package com.telewave.policesystemweb.szrk;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.sun.xml.messaging.saaj.packaging.mime.internet.MimeUtility;
/**
* 文件下载
* @author Luxh
*/
public class DownloadAction extends ActionSupport {
private static final long serialVersionUID = -3036349171314867490L;
//文件名
private String fileName;
private String downfilename;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) throws UnsupportedEncodingException {
//用UTF-8重新编码文件名,解决中文乱码
this.fileName = fileName;
}
public String getDownfilename() {
return downfilename;
}
public void setDownfilename(String downfilename) {
this.downfilename = downfilename;
}
public InputStream getInputStream() throws UnsupportedEncodingException, FileNotFoundException{
int i = fileName.lastIndexOf("\\");
String str = fileName.substring(i+1);//截取文件名
HttpServletRequest request = ServletActionContext.getRequest();
String userAgent = request.getHeader("User-Agent");
userAgent = userAgent.toLowerCase();
String filernd = "";
//针对不同浏览器,进行不同的编码,目前支持火狐、谷歌、ie
if (null != userAgent){
if (-1 != userAgent.indexOf("firefox")) {//Firefox
filernd = "=?UTF-8?B?" + (new String(org.apache.commons.codec.binary.Base64.encodeBase64(str.getBytes("UTF-8"))))+ "?=";
}else if (-1 != userAgent.indexOf("chrome")) {//Chrome
filernd = new String(str.getBytes(), "ISO8859-1");
} else {//IE7+
filernd = java.net.URLEncoder.encode(str, "UTF-8");
filernd = StringUtils.replace(filernd, "+", "%20");//替换空格
}
} else {
filernd = str;
}
setDownfilename(filernd);
// IE浏览器可以用以下方式,不通过xml文件<param name="contentDisposition">attachment;filename="${downfilename}"</param>,但是非ie不支持以下这种方式,
// 只能通过xml文件方式读取action中的downfilename
// ServletActionContext.getResponse().setHeader(
// "Content-Disposition",
// "attachment;fileName="+filernd);
// + java.net.URLEncoder.encode(str, "ISO-8859-1"));
InputStream inputStream = new FileInputStream(fileName);
return inputStream;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
<action name="download" class="com.telewave.policesystemweb.szrk.DownloadAction" >
<result name="success" type="stream">
<!-- 下载文件类型定义 -->
<param name="contentType">application/octet-stream</param>
<!-- 下载文件输出流定义 -->
<param name="inputName">inputStream</param>
<!-- 下载文件处理方式 -->
<param name="contentDisposition">attachment;filename="${downfilename}"</param>
<!-- 下载文件的缓冲大小 -->
<param name="bufferSize">4096</param>
</result>
</action>
java代码(可见附件):
package com.telewave.policesystemweb.szrk;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.sun.xml.messaging.saaj.packaging.mime.internet.MimeUtility;
/**
* 文件下载
* @author Luxh
*/
public class DownloadAction extends ActionSupport {
private static final long serialVersionUID = -3036349171314867490L;
//文件名
private String fileName;
private String downfilename;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) throws UnsupportedEncodingException {
//用UTF-8重新编码文件名,解决中文乱码
this.fileName = fileName;
}
public String getDownfilename() {
return downfilename;
}
public void setDownfilename(String downfilename) {
this.downfilename = downfilename;
}
public InputStream getInputStream() throws UnsupportedEncodingException, FileNotFoundException{
int i = fileName.lastIndexOf("\\");
String str = fileName.substring(i+1);//截取文件名
HttpServletRequest request = ServletActionContext.getRequest();
String userAgent = request.getHeader("User-Agent");
userAgent = userAgent.toLowerCase();
String filernd = "";
//针对不同浏览器,进行不同的编码,目前支持火狐、谷歌、ie
if (null != userAgent){
if (-1 != userAgent.indexOf("firefox")) {//Firefox
filernd = "=?UTF-8?B?" + (new String(org.apache.commons.codec.binary.Base64.encodeBase64(str.getBytes("UTF-8"))))+ "?=";
}else if (-1 != userAgent.indexOf("chrome")) {//Chrome
filernd = new String(str.getBytes(), "ISO8859-1");
} else {//IE7+
filernd = java.net.URLEncoder.encode(str, "UTF-8");
filernd = StringUtils.replace(filernd, "+", "%20");//替换空格
}
} else {
filernd = str;
}
setDownfilename(filernd);
// IE浏览器可以用以下方式,不通过xml文件<param name="contentDisposition">attachment;filename="${downfilename}"</param>,但是非ie不支持以下这种方式,
// 只能通过xml文件方式读取action中的downfilename
// ServletActionContext.getResponse().setHeader(
// "Content-Disposition",
// "attachment;fileName="+filernd);
// + java.net.URLEncoder.encode(str, "ISO-8859-1"));
InputStream inputStream = new FileInputStream(fileName);
return inputStream;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
- DownloadAction.rar (1.4 KB)
- 下载次数: 0
发表评论
-
weblogic 控制台密码破解
2016-01-19 14:44 7535原文地址:https://blog.netspi.com/de ... -
java程序中处理一个包含诡异的不可见的字符。
2015-11-17 10:59 1165由于问题字符串粘贴到此编辑里会自动变为空格。在ecplise里 ... -
别让防火墙阻塞了数据库连接
2015-11-09 16:40 697转自:http://www.360doc.com/cont ... -
spring中以dataSource方式使用proxool连接池
2015-01-13 10:37 1044spring中以dataSource方式使用proxool连接 ... -
在web.xml配置监听的类是死循环,导致tomcat不能正常启动解决办法
2015-01-12 10:59 846简单说就是一句话:利用线程,就不会阻止tomcat正常启动 p ... -
Log4j基本使用方法
2014-11-26 10:12 570Log4j基本使用方法 转自:http://blog.csd ... -
EL表达式详解
2014-09-06 11:41 0一、JSP EL语言定义 E L(Expr ... -
利用servlet监听器,系统启动时创建自定义容器简单例子
2014-09-05 09:26 680web.xml加入: <listener> & ... -
webservice简单实例
2014-09-05 09:09 1134webservice简单实例. -
FireFox火狐浏览器下实现javascript提交表单form
2014-08-22 23:35 836FireFox火狐浏览器下实现javascript提交表单fo ... -
多线程_生产者与消费者模式示例
2014-07-29 21:19 0多线程_生产者与消费者模式示例 -
myeclipse10破解工具,非常好用
2014-06-03 21:22 827myeclipse10破解工具非常好用!本人验证成功! 工具原 ... -
java中容器类ArrayList(底层数组实现)和数组存取效率简单测试
2014-05-27 21:29 698ArrayList存取效率和数组的存取效率比较: ArrayL ... -
cookie,session.application三者比较总结:
2014-01-13 16:07 845cookie保存在客户端。 Session保存在服务器端。 a ... -
java中,图片的base64码在js中进行编码传递到后台中再进行解码并生成图片代码示例
2014-01-09 10:36 4116java中,图片的base64编码作为参数从js传递到后台中再 ...
相关推荐
在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
在这个“struts2文件下载实例”中,我们看到如何使用Struts2实现从数据库获取文件信息并在页面上展示,以及提供一个链接让用户能够下载这些文件。以下是对这个实例的详细解释: 1. **数据库操作**: - 首先,`Find...
在Struts2中处理文件下载是常见的需求,比如用户请求下载服务器上的文件,如PDF、图片或其他类型的文档。本案例"Struts2之struts012"将深入探讨如何在Struts2中实现文件下载的功能。 首先,我们需要创建一个Action...
在Struts2中,文件下载是常见的功能,尤其在处理用户请求获取服务器上的文件时。本示例提供了Struts2实现文件下载的源码,旨在帮助开发者快速理解和实现这一功能。 首先,我们需要理解Struts2文件下载的基本流程: ...
本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...
struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单
在Struts2中实现文件下载功能,可以为用户提供方便的数据传输服务,例如下载PDF、图片、文档等资源。本程序包含两种实现方式:动态下载和静态下载,下面将详细解释这两种方法。 1. 动态下载: 动态下载是通过...
总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...
"struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必不可少的组件。 "Struts2"可能是项目实例代码,包括Action类、视图...
从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...
在Struts中实现文件下载是一项常见的功能,尤其在处理用户请求获取服务器上的静态或动态资源时。这篇博文将深入探讨如何在Struts框架下实现文件下载的功能。 首先,我们需要了解文件下载的基本原理。当用户点击下载...
在Struts2中,处理文件上传和下载是常见的需求。为了实现这一功能,开发人员通常需要依赖两个关键的第三方库:Apache Commons FileUpload和Apache Commons IO。 Apache Commons FileUpload是一个专门用于处理HTTP...
在Struts2中处理文件下载是常见的需求,尤其是在处理用户请求获取服务器上的静态资源或者上传文件的下载时。本资源包提供的源码详细演示了三种不同的文件下载方法。 1. **超链接下载** 超链接下载是最直观且简单的...
通过覆写StreamResult的方法 解决struts2文件下载点击取消服务器报错解
在下载并解压"struts2所有jar包"后,开发者需要将lib目录下的所有jar文件添加到项目构建路径中,确保运行时可以找到所有依赖。对于Maven或Gradle用户,可以通过在pom.xml或build.gradle文件中指定相应的依赖项,实现...