Struts2 文件下载
1 准备下载的文件
在WebRoot下建立upload目录,并放入一个准备下载的文件
2 编写JSP页面,提供下载链接
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>一点教程-struts2的文件下载</title>
</head>
<body>
<h3>文件下载</h3>
<a href="demo1.action">下载文件</a>
</body>
</html>
3 编写Action,返回文件输入流
package com.yiidian.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URLEncoder;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 文件下载
* @author 一点教程(yiidian.com)
*/
public class Demo1Action extends ActionSupport{
private File file = null;
//提供文件名称
public String getFileName() throws Exception{
return URLEncoder.encode(file.getName(),"utf-8");
}
//提供下载文件的输入流
public InputStream getFileStream() throws Exception{
return new FileInputStream(file);
}
@Override
public String execute() throws Exception {
//读取需要下载的文件
String uploadPath = ServletActionContext.getServletContext().getRealPath("upload");
file = new File(uploadPath+"/spring.jpg");
//struts2是依靠一个叫stream的视图进行文件下载
return SUCCESS;
}
}
4 struts.xml配置下载视图
注意:inputName的值和Action的getFileStream名称是一致的!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="base" extends="struts-default" namespace="/">
<action name="demo1" class="com.yiidian.action.Demo1Action">
<!-- 文件下载必须使用stream视图 -->
<result type="stream">
<!-- 设置响应头 -->
<param name="contentDisposition">attachment;filename=${fileName}</param>
<!-- 需要下载的输入流 -->
<param name="inputName">fileStream</param>
</result>
</action>
</package>
</struts>
5 运行测试
热门文章
优秀文章