`
阅读更多

Struts2 下载文件

使用框架:Struts2

(1)pom.xml配置

<properties>
		<java.version>1.6</java.version>
		<tomcat.version>7.0.26</tomcat.version>
		<struts2.version>2.3.4.1</struts2.version>
		<spring.version>3.2.3.RELEASE</spring.version>
	</properties>
<dependencies>


		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
			<version>${struts2.version}</version>
			<exclusions>
				<exclusion>
					<artifactId>tools</artifactId>
					<groupId>com.sun</groupId>
				</exclusion>
			</exclusions>

		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-json-plugin</artifactId>
			<version>${struts2.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-spring-plugin</artifactId>
			<version>2.3.14.3</version>
		</dependency>

 

(2)Struts配置文件

<!-- 下载指定的单个文件 -->
		<action name="downloadOneFile" class="downloadOneFileAction">
		<!-- 上传大小限制见struts主配置文件中的常量 struts.multipart.maxSize -->
			<result type="stream" name="success">
				<param name="inputName">downloadFile</param>
				<param name="contentType">application/x-zip-compressed</param>
				<param name="contentDisposition">attachment;filename=${filename}</param>
				<param name="bufferSize">4096000</param>
			</result>
		</action>

 注意:result的type属性值必须是stream

(3)action

package com.shop.jn.action.upload;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.common.action.upload.SUploadAction;
import com.common.util.ZipUtil;
import com.io.hw.file.util.FileUtils;
import com.shop.jn.entity.FileLinuxBean;
import com.shop.jn.util.ShopUtils;
import com.string.widget.util.ValueWidget;

/***
 * 下载单个文件.
 * 
 * @author huangwei
 *
 */
public class DownloadOneFileAction extends SUploadAction {
	private static final long serialVersionUID = -3547982986077322220L;
	/**
	 * 单独下载zip中的文件时为null
	 */
	private String filename;
	// private String filepa;
	private String fileInZip;
	private int fileId;
	/***
	 * 不是绝对路径,只是文件名
	 */
	private String zipFilename;
	private boolean isFileInzip;

	public InputStream getDownloadFile() throws Exception {
		
		FileLinuxBean bean=null;
		try {
			bean = ShopUtils.getFileLinuxBean(fileId);
		} catch (NullPointerException e) {
			e.printStackTrace();
			return null;
		}
		String filepa = bean.getFilepath();

		if (isFileInzip) {// 下载zip中的文件
			this.filename = fileInZip.substring(fileInZip.indexOf("/") + 1);
			return ZipUtil.getInputStreamFromZip(new File(filepa), fileInZip);
		} else {// 下载upload 中的文件
			this.filename = bean.getFilename();
			BufferedInputStream in = FileUtils
					.getBufferedInputStreamFromFile(filepa);// SystemUtil.convertISO2UTF(
			int length = in.available();
			System.out.println("stream length:" + length);
			ServletActionContext.getResponse().addHeader("Content-Length",
					String.valueOf(length));
			return in;// filepath
		}

	}

	public String execute() throws Exception {
		// System.out.println("download:" + filename);
		// if (StringUtils.isEmpty(this.filename)) {
		// this.filename = SystemUtil.getFileSimpleName(filepa);
		// }
		return SUCCESS;
	}

	public String getFilename() {
		return filename;
	}

	public void setFilename(String filename) {
		this.filename = filename;
	}

	public boolean isFileInzip() {
		return isFileInzip;
	}

	public void setIsFileInzip(boolean isFileInzip) {
		this.isFileInzip = isFileInzip;
	}

	public String getZipFilename() {
		return zipFilename;
	}

	public void setZipFilename(String zipFilename) {
		this.zipFilename = zipFilename;
	}

	public int getFileId() {
		return fileId;
	}

	public void setFileId(int fileId) {
		this.fileId = fileId;
	}

	public String getFileInZip() {
		return fileInZip;
	}

	public void setFileInZip(String fileInZip) {
		this.fileInZip = fileInZip;
	}

}

 

注意:Struts配置文件中inputName 的值为downloadFile,所以action中有downloadFile 的getter方法

0
8
分享到:
评论

相关推荐

    struts2实现文件下载功能

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

    struts2实现文件上传下载

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

    struts2文件上传下载源代码

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

    struts2中文学习文档

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

    Struts2接口文档

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

    struts2官方文档

    struts2官方文档

    struts2帮助文档

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

    struts2 API帮助文档

    这个API帮助文档是开发者在使用Struts2框架时的重要参考资料,它详细阐述了框架的各种组件、类库和方法,有助于理解并有效利用Struts2的功能。 1. **Struts2核心组件** - `struts2-core`:这是Struts2框架的核心...

    Struts2 Struts2 超好的Struts2 pdf 文档

    4. **结果类型(Result Types)**:Struts2支持多种结果类型,如`dispatcher`(默认,将结果转发到JSP页面)、`stream`(用于文件下载)、`redirect`(重定向URL)等,可以根据不同的需求选择合适的结果类型。...

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

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

    struts2所有jar包程序文件

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

    Struts的文件下载

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

    struts2api文档(全)

    网上很多有关struts2的api文档都是不全的。我经过精心整理出的struts2api文档,非常齐全。

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

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

    Struts2下载文件点击取消出现的异常解决办法(含demo)

    在我们做struts2文件下载的时候,经常会遇到这种问题:点“打开/保存”一切正常,但当我们点击“取消”时,却报一堆的异常(其中包括ClientAbortException异常),非常让人头疼,如何彻底解决呢?附件中使用struts2-...

    Struts2帮助文档

    "Struts2.0中文教程.chm"文件很可能是官方文档的中文版,它将涵盖Struts2的基础概念、配置、控制器、模型、视图、拦截器、异常处理、国际化、测试等方面的内容。这份文档将帮助初学者快速上手,同时也为有经验的...

    Struts2+Jquery+Ajax

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

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

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

    struts2文件上传下载

    在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...

Global site tag (gtag.js) - Google Analytics