Struts2文件下载
来源:互联网 发布:道家经典软件 编辑:程序博客网 时间:2024/06/06 11:12
上一篇刚刚写了一个上传的,今天再来复习一下Struts2的文件下载
Struts2单多文件上传:http://blog.csdn.net/u012219290/article/details/45671657
简介:
struts的下载action与配置一个普通的action基本一致,主要的地方在于result的type配置为stream
stream类型的result配置主要需要四个属性:
contentType:
指定下载文件的文件类型,与互联网MIME标准中的规定类型一致HTTP Content-type
inputName:
指定下载文件入口输入流
contentDisposition:
文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对
框,否则浏览器会尝试直接显示文件。取值为:attachment;filename=”struts.txt” ,表示文件下载的时候保存的名字应为
struts.txt 。如果直接写filename=”struts.txt” >那么默认情况是代表inline浏览器会尝试自动打开它,等价于这样的写法:
inline; filename=”struts.txt”
bufferSize:
指定下载文件时的缓冲大小
注意:inputName参数的配置必须对应action中返回流的get方法一致。
比如:
//配置为<param name="inputStream">inputStream</param>//对应action中的方法public InputStream getInputStream(){}
先看效果:
一.访问http://localhost:8080/Struts2Download/getFileNames.action获取可下载的文件列表
二.点击下载将对应文件保存到指定目录(图略)
工程的创建步骤和工程的目录与Struts2文件上传相同
这里直接上代码
1.struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <!--将默认上传的文件大小改为500MB --> <constant name="struts.multipart.maxSize" value="524288000" /> <!--编码--> <constant name="struts.i18n.encoding" value="UTF-8" /> <!--开发模式--> <constant name="struts.devMode" value="true" /> <package name="default" extends="json-default" namespace="/"> <!-- 文件下载 --> <action name="fileDownload" class="action.DownloadAction"> <param name="filePath">upload</param> <result name="success" type="stream"> <param name="contentType">application/octet-stream;charset=UTF-8</param> <param name="inputName">inputStream</param> <param name="contentDisposition">attachment;filename="${fileName}"</param> <param name="bufferSize">4096</param> </result> </action> <!--获取可下载的文件--> <action name="getFileNames" class="action.DownloadAction" method="getFileNames"> <!--下载文件的目录--> <param name="filePath">upload</param> <result name="success">download.jsp</result> </action> </package></struts>
2.DownloadAction.java
package action;import java.io.File;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;/** * Struts2文件下载 * * @author Administrator * */@SuppressWarnings("serial")public class DownloadAction extends ActionSupport { private String fileName;// 文件名 private String filePath;// 文件存放的路径 private List<String> nameList = new ArrayList<String>();// 可下载的文件集 /** * 获取所有可供下载的文件 * @return */ public String getFileNames() { String realPath = ServletActionContext.getServletContext().getRealPath( File.separator + filePath); File file = new File(realPath); File[] files = file.listFiles(); for (File f : files) { if (f.isFile()) { nameList.add(f.getName()); } } return SUCCESS; } /** * 文件传输流 * @return * @throws Exception */ public InputStream getInputStream() throws Exception { InputStream input = ServletActionContext.getServletContext() .getResourceAsStream( File.separator + filePath + File.separator + fileName); //编码转换,防止页面显示文件名乱码。这里文件放在tomcat中,tomcat已经设置编码为utf-8 this.fileName = new String(fileName.getBytes("utf-8"), "ISO8859-1"); return input; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public String getFilePath() { return filePath; } public void setFilePath(String filePath) { this.filePath = filePath; } public List<String> getNameList() { return nameList; } public void setNameList(List<String> nameList) { this.nameList = nameList; }}
3.download.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%String path = request.getContextPath();String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head> <base href="<%=basePath%>"> <title>文件下载</title></head><body> <table style="width: 50%;text-align:center" border="1"> <caption style="color:red;font-size:20px">文件列表</caption> <tr style="background-color:#99CCCC"> <td>序号</td><td>文件名</td><td>操作</td> </tr> <c:forEach items="${nameList}" var="fileName" varStatus="status"> <tr> <td>${status.count}</td> <td>${fileName}</td> <td> <a href="fileDownload.action?fileName=${fileName}">下载</a> </td> </tr> </c:forEach> </table></body></html>
- struts2实现文件下载
- struts2文件下载
- Struts2控制文件下载
- struts2文件下载
- Struts2 文件下载
- ext + struts2 下载文件
- Struts2文件下载
- Struts2文件下载
- struts2文件下载
- Struts2文件下载
- Struts2 的文件下载
- Struts2 的文件下载
- Struts2文件的下载
- Struts2文件下载
- struts2.1文件下载
- struts2文件下载
- struts2下载文件
- struts2 文件下载
- Eclipse 搜索
- leetcode Single Number 136
- mysql 数据库笔记-基本查询(分组、聚合函数)
- Ubuntu tomcat配置https的方法
- lua 闭包及upvalue
- Struts2文件下载
- [POI 2014]Couriers(主席树+二分)
- Android-Universal-Image-Loader三大组件DisplayImageOptions、ImageLoader、ImageLoaderConfiguration详解
- mysql的表的大小写区分
- Android 自定义日期控件 (仿QQ,IOS7)
- Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoo
- [Unity3d插件KGFMapSystem]非常不错的小地图的制作
- error C2871: “cv”: 具有该名称的命名空间不存在
- elasticsearch客户端大全(不断更新)