`
段海波
  • 浏览: 318298 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2文件下載的實現

    博客分类:
  • j2ee
阅读更多

DownloadAction.java

 

package dsh.bikegis.action.tool;

import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

import org.apache.struts2.ServletActionContext;

import dsh.bikegis.system.SysAction;
/**
 * 文件下載的action
 * @author NanGuoCan
 *
 */
public class DownloadAction extends SysAction {   
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private static final String path="/kmldata/";
	private String fileName;// 初始的通过param指定的文件名属性   
	  
	public InputStream getInputStream() throws Exception {  
		String realPath=path+this.decodeFileName();
		System.out.println(ServletActionContext.getServletContext().getResourceAsStream(realPath)+"這是或得的inputstream流");
	// 通过 ServletContext,也就是application 来读取数据   
	return ServletActionContext.getServletContext().getResourceAsStream(realPath);   
	  
	}   
	  
	public String execute() {   
	 String realPath = ServletActionContext.getServletContext()
		.getRealPath(path + this.decodeFileName());
		System.out.println(realPath+"這是第一個文件的路徑");
		if (new File(realPath).exists()) {
			return ActionSupport.SUCCESS;
		}else{
			this.errMesg="您要下載的文件不存在";
			return ActionSupport.ERROR;
		}
	
	  
	}   
	 /**
	  * 對前臺傳來的fileName進行解碼 
	  */
	  public String decodeFileName(){
		  String tempFileName=null;
		  try {
			tempFileName=URLDecoder.decode(fileName,"utf-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		System.out.println(tempFileName);
		return tempFileName;  
	  }
	 /* 
     * @getDownloadFileName 
     * 此方法对应的是struts.xml文件中的: 
     * <param name="contentDisposition">  
     *          attachment;filename="${downloadFileName}"  
     *       </param>  
     * 这个属性设置的是下载工具下载文件时显示的文件名, 
     * 要想正确的显示中文文件名,我们需要对fileName再次编码 
     * 否则中文名文件将出现乱码,或无法下载的情况 
     * */ 
	  
	public String getDownloadFileName() {   
	  
	String downFileName = fileName;   
	  
	try {   
	  
	downFileName = new String(downFileName.getBytes(), "ISO8859-1");   
	  
	} catch (UnsupportedEncodingException e) {   
	  
	e.printStackTrace();   
	  
	}   
	return downFileName;   
	  
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}   
	  
	}   

 struts.xml

 

<!DOCTYPE struts PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="downLoadAction" namespace="/load" extends="bikeGIS">
		<action name="downLoad" class="downloadAction">
        <result name="success" type="stream">  
       <!-- 动态文件下载的,事先并不知道未来的文件类型,那么我们可以把它的值设置成为:application/octet-stream;charset=ISO8859-1 ,注意一定要加入charset,否则某些时候会导致下载的文件出错; -->
            <param name="contentType">  
                application/octet-stream;charset=ISO8859-1  
            </param>  
            <!-- 指定action类中的方法名(本例中对应于getInputStream方法) -->
            <param name="inputName">inputStream</param>  
            <!-- 使用经过转码的文件名作为下载文件名,downloadFileName属性 , 对应action类中的方法 getDownloadFileName() -->  
            <param name="contentDisposition">  
                attachment;filename="${downloadFileName}"  
            </param>  
            <param name="bufferSize">4096</param>  
        </result>  
        <result name="error">/WEB-INF/error.jsp</result>
	</package>
</struts>

 前臺頁面引用方法:这个为写在jquery的ajax方法中的,可以使用js的encodeURI方法,

<a href="${requestScope.basePath}/load/downLoad.action?fileName='+encodeURI(encodeURI(cityMeg[i].roadkml))+'">'+cityMeg[i].kmlname+'</a>

如果直接写在html中的话可以采用下面的方法

<a href="#" onclick="loadLink('${around.medicial}');">下載</a>
然后在body里面写一个js方法
	<script type="text/javascript">
			function loadLink(around){
				location.href='${requestScope.basePath}/load/downAroundAction.action?fileName='+encodeURI(encodeURI(around));
			}
		</script>
 
分享到:
评论

相关推荐

    struts2实现文件下载功能

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

    struts2实现文件上传下载

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

    struts2文件上传下载源代码

    这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件到服务器。在Struts2中,这通常通过表单实现,表单包含一个`&lt;input type="file"&gt;`...

    struts2实现文件下载实例源代码

    在Struts2中实现文件下载的功能,可以帮助用户从服务器获取并保存文件到本地计算机,例如这里的"1.xls"文件。下面我们将深入探讨如何在Struts2框架下实现文件下载的实例。 首先,我们需要在项目的Web应用目录结构中...

    Struts的文件下载

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

    Struts2+Jquery+Ajax

    Struts2作为Controller层,通过Action类来实现业务逻辑,并通过配置文件或注解来定义Action与URL的映射关系。 Jquery是一个高效的JavaScript库,简化了HTML文档遍历、事件处理、动画以及Ajax交互。它使得开发者能更...

    struts2中文学习文档

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

    struts2文件下载

    对于Struts2框架中的文件下载功能,主要是通过配置文件和控制器(Action)来实现的。文件下载功能在实际开发中非常实用,尤其是在处理用户上传文件后需要下载的情况。接下来我们将详细介绍如何在Struts2中实现文件...

    struts2帮助文档

    struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2中用Spring实现IOC struts2中的零配置与IOC struts2介绍之使用连接...

    struts2下载功能实现

    在Struts2中实现下载功能是一项常见的需求,这通常涉及到处理文件流并将其发送到客户端。以下是如何在Struts2中实现下载功能的详细步骤: 1. **Struts2配置**: 在Struts2的配置文件(例如struts.xml或类似的配置...

    struts2实现多文件上传下载

    网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载...

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

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

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

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

    Struts2实现文件的上传下载

    在本项目中,我们关注的是如何使用Struts2来实现实时的文件交互操作,即文件的上传与下载。 文件上传在Web应用中很常见,例如用户提交表单时可能需要附加文件,如简历、图片或文档等。Struts2提供了一套完整的机制...

    Struts2文件流方式导出下载excel、Txt、image图片

    通过上述步骤,我们就可以在Struts2框架下实现文件流方式的下载功能,无论是Excel、TXT还是图片,都能有效地直接返回给浏览器,让客户端进行下载。这种方式既节省了服务器资源,也提高了用户体验。在实际项目中,...

    struts1和struts2分别实现文件上传下载功能

    Struts1和Struts2是两个非常著名的Java Web框架,它们都提供了处理文件上传和下载的功能,但实现方式有所不同。本文将深入探讨这两个框架在文件操作方面的具体实现。 首先,让我们了解一下Struts1中的文件上传功能...

    struts实现的文件上传下载功能

    在这个特定的场景中,我们关注的是如何使用Struts来实现文件的上传和下载功能。这个功能对于任何Web应用来说都是非常重要的,因为它允许用户交互地处理数据和资源。 首先,我们需要理解文件上传的基本流程。在...

    struts2的Ajax实现注册验证

    1. **Struts2配置**:首先,需要在`struts.xml`配置文件中定义一个Action,这个Action将处理Ajax请求。你需要设置一个特定的结果类型,比如`json`,这将使Struts2以JSON格式返回数据,非常适合Ajax调用。 2. **Ajax...

    Struts2接口文档

    这个“Struts2接口文档”是开发者的重要参考资料,提供了关于Struts2框架内各个组件、类库以及接口的详细说明,帮助开发者深入理解框架的内部工作原理并有效地使用其功能。 Struts2的核心组件包括Action、Result、...

Global site tag (gtag.js) - Google Analytics