Struts2文件下载的简单示例

1. 先在资源文件夹下放入两个资源文件:Java程序设计.zip和logo.jpg


2. 下载 页面index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>文件下载</title>
	</head>
	<body>
		<a href="resource/Java程序设计.zip">下载文件zip</a>
		<br/>
		<a href="resource/logo.jpg">下载文件jpg</a>
	</body>
</html>
这样可以发现,点击下载文件zip这个链接是会报错,而下载文件jpg这个链接可以正常下载。可以使用Struts2的文件下载支持来下载文件名含有中文字符的文件。


3. 处理文件下载的Action:

package com.huey.action;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/**
 * DownloadAction,用于处理文件下载
 * @version 2012-08-21
 * @author Huey2672
 *
 */
public class DownloadAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 3827210335251861916L;
	
	// 该属性在struts.xml中配置,被下载文件的所在路径
	private String inputPath;
	
	public void setInputPath(String inputPath) {
		this.inputPath = inputPath;
	}
	
	/**
	 * 该方法为文件下载的入口,返回类型为java.io.InputStream
	 * @return 指定要下载的文件对应的输入流
	 * @throws Exception
	 */
	public InputStream getTargetFile() throws Exception {
		return ServletActionContext.getServletContext()
			.getResourceAsStream(inputPath);
	}
	
}

4. 在struts.xml文件中配置Action:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>

	<!-- 指定Struts2文件上传过程中的临时文件夹 -->
	<constant name="struts.multipart.saveDir" value="D:\\apache-tomcat-6.0.36\\webapps\\UploadingDemo\\WEB-INF\\upload\\tmp"/>
	
	<package name="download" extends="struts-default">
		<action name="download" class="com.huey.action.DownloadAction">
			<!-- 指定被下载文件的物理资源 -->
			<param name="inputPath">\resource\Java程序设计.zip</param>
			<!-- type属性值为stream,用于支持文件下载功能 -->
			<result name="success" type="stream">
				<!-- 指定被下载文件的文件类型 -->
				<param name="contentType">application/zip</param>
				<!-- 指定被下载文件的入口输入流,与Action中方法名对应 -->
				<param name="inputName">targetFile</param>
				<!-- 指定被下载文件的文件名 -->
				<param name="contentDisposition">filename="JavaProgramDesign.zip"</param>
				<!-- 指定被下载文件的文件类型缓冲大小,单位字节 -->
				<param name="bufferSize">4096</param>
			</result>
		</action>
	</package>

</struts>

6. 修改下载页面index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>文件下载</title>
	</head>
	<body>
		<a href="download.action">下载文件zip</a>
		<br/>
		<a href="resource/logo.jpg">下载文件jpg</a>
	</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值