`
ruyi574812039
  • 浏览: 45236 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

struts2文件下载

阅读更多
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;
    }


}

分享到:
评论

相关推荐

    struts2实现文件下载功能

    在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    struts2文件下载实例

    在这个“struts2文件下载实例”中,我们看到如何使用Struts2实现从数据库获取文件信息并在页面上展示,以及提供一个链接让用户能够下载这些文件。以下是对这个实例的详细解释: 1. **数据库操作**: - 首先,`Find...

    Struts2之struts2文件下载详解案例struts012

    在Struts2中处理文件下载是常见的需求,比如用户请求下载服务器上的文件,如PDF、图片或其他类型的文档。本案例"Struts2之struts012"将深入探讨如何在Struts2中实现文件下载的功能。 首先,我们需要创建一个Action...

    struts2文件下载源码

    在Struts2中,文件下载是常见的功能,尤其在处理用户请求获取服务器上的文件时。本示例提供了Struts2实现文件下载的源码,旨在帮助开发者快速理解和实现这一功能。 首先,我们需要理解Struts2文件下载的基本流程: ...

    struts2实现文件上传下载

    本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...

    struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单

    struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单

    Struts2文件下载程序使用框架实现

    在Struts2中实现文件下载功能,可以为用户提供方便的数据传输服务,例如下载PDF、图片、文档等资源。本程序包含两种实现方式:动态下载和静态下载,下面将详细解释这两种方法。 1. 动态下载: 动态下载是通过...

    struts2_uploadify带进度条的多文件上传下载

    总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...

    Struts2+Jquery+Ajax

    "struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必不可少的组件。 "Struts2"可能是项目实例代码,包括Action类、视图...

    struts2中文学习文档

    从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...

    Struts的文件下载

    在Struts中实现文件下载是一项常见的功能,尤其在处理用户请求获取服务器上的静态或动态资源时。这篇博文将深入探讨如何在Struts框架下实现文件下载的功能。 首先,我们需要了解文件下载的基本原理。当用户点击下载...

    struts2 文件下载需要的架包 commons-fileupload-1.2 commons-io-1.3.2

    在Struts2中,处理文件上传和下载是常见的需求。为了实现这一功能,开发人员通常需要依赖两个关键的第三方库:Apache Commons FileUpload和Apache Commons IO。 Apache Commons FileUpload是一个专门用于处理HTTP...

    Struts2 三种下载方法 源码(有图有真相)

    在Struts2中处理文件下载是常见的需求,尤其是在处理用户请求获取服务器上的静态资源或者上传文件的下载时。本资源包提供的源码详细演示了三种不同的文件下载方法。 1. **超链接下载** 超链接下载是最直观且简单的...

    struts2文件下载点击取消服务器报错解决办法

    通过覆写StreamResult的方法 解决struts2文件下载点击取消服务器报错解

    struts2所有jar包程序文件

    在下载并解压"struts2所有jar包"后,开发者需要将lib目录下的所有jar文件添加到项目构建路径中,确保运行时可以找到所有依赖。对于Maven或Gradle用户,可以通过在pom.xml或build.gradle文件中指定相应的依赖项,实现...

Global site tag (gtag.js) - Google Analytics