struts2文件下载及 <param name="inputName">inputStream</param>的理解
//来自于wnczwl369
01.<SPAN style="FONT-SIZE: 16px"><?xml version="1.0" encoding="UTF-8" ?>
02.<!DOCTYPE struts PUBLIC
03. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
04. "http://struts.apache.org/dtds/struts-2.0.dtd">
05.
06.<struts>
07. <constant name="struts.enable.DynamicMethodInvocation" value="false" />
08. <constant name="struts.devMode" value="true" />
09.
10. <package name="app14a" extends="struts-default">
11. <action name="Menu">
12. <result>/jsp/Menu.jsp</result>
13. </action>
14. <action name="ViewCss" class="app14a.FileDownloadAction">
15. <result name="success" type="stream">
16. <param name="inputName">inputStream</param>
17. <param name="contentType">text/css</param>
18. <param name="contentDisposition">filename="main11.css"</param>
19. <param name="bufferSize">2048</param>
20. </result>
21. </action>
22. <action name="DownloadCss" class="app14a.FileDownloadAction">
23. <result name="success" type="stream">
24. <param name="inputName">inputStream</param>
25. <param name="contentType">application/octet-stream</param>
26. <param name="contentDisposition">filename="main111222.css"</param>
27. <param name="bufferSize">2048</param>
28. </result>
29. </action>
30. </package>
31.</struts></SPAN>
action特殊的地方在于result的类型是一个流(stream),配置stream类型的结果时,因为无需指定实际的显示的物理资源,所以无需指定location属性,只需要指定inputName属性,该属性指向被下载文件的来源,对应着Action类中的某个属性,类型为InputStream,,struts2会寻找一个返回类型为InputStream的方法getInputStream()(方法名最好为getInputStream,有人说此方法名可以为别的可能需要与struts.xml中的inputName保存一致下面有解释,不过我实验的结果不是这样,须为getInputStream,可能是org.apache.struts2.dispatcher.ResultStream类限制造成,感兴趣的可以看看此类的源码,就会明白的),得到InputStream。
另一种理解:action中定义一个返回InputStream的方法,该方法作为被下载文件的入口,且需要配置stream类型结果时指定inputName参数,inputName参数的值就是方法去掉get前缀、首字母小写的字符串。
下面则列出了和下载有关的一些参数列表:
参数说明
contentType
内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片
inputName
下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方法
contentDisposition
文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:
attachment;filename="struts2.txt",表示文件下载的时候保存的名字应为struts2.txt。如果直接写filename="struts2.txt",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline; filename="struts2.txt"
bufferSize
下载缓冲区的大小
分享到:
相关推荐
<s:param name="id"><s:property value="id"/></s:param> </s:url>">Edit</a> </td> <td> <a href="<s:url action="delete" portletMode="edit"> <s:param name="id"><s:...
<param name="srb">A string that contains the location of the resource file with name information.</param> </member> - <member name="M:Symbol.Attributes.PropertyNameAttribute.#ctor(System.String,...
-<validators> -<validator type="requiredstring"> <param name="fieldName">name</param> <message>用户名必须输入</message> </validator> -<validator type="requiredstring"> <param name="fieldName">password...
本文实例为大家分享了Winform实现导入导出Excel文件的具体代码,供大家参考,具体内容如下 ... /// <param name=isShowExcle>导出后是否打开文件</param> /// <returns></returns> public static bool DataTable
<param name="dgv2">DataGridView2</param> <param name="cb1">控制年</param> <param name="cb2">控制季</param> <param name="cb3">控制月</param> <param name="cb4">控制周</param> <param name="cb5...
<param name="inputstream">inputStream</param> <!-- 设置下载的方式及文件名 --> <param name="contentDisposition">attachment;filename="${fileName}"</param> </result> </action>
/// <param name="ZipFile">需要解压的Zip文件(绝对路径)</param> /// <param name="TargetDirectory">解压到的目录</param> /// <param name="Password">解压密码</param> /// <param name="OverWrite">是否...
/// <param name="entity"></param> /// <returns></returns> public abstract string EditOrder(T entity); /// <summary> /// 编辑单据详细信息 /// </summary> /// <param name="entity"></param> /// ...
读取INI文件C#源代码 /**//// <summary> /// /// </summary> /// <param name="ApplicationName">段名</param> /// <param name=... /// <param name="FileName">文件路径</param> /// <returns></returns>
/// <param name="DbConn"></param> /// <param name="text"></param> /// <param name="type"></param> /// <param name="paras"></param> /// <param name="DbTrans"></param> /// <returns></returns> int...
<font class=text color="#008000"><font size="2">播放本机视频文件:</font></font><font color="#FF0000"><input name="textfield2" type="file" size="13" onchange="LoadVideo(this.value)" style="BACKGROUND...
<summary> /// INI配置写入 /// </summary> /// <param name="section">段落名称</param> /// <param name="key">关键字</param> /// <param name="val">关键字的数值</param> /// <param name="filePath">文件完整...
/// <param name=sFile>原图片</param> /// <param name=dFile>压缩后保存位置</param> /// <param name=dHeight>高度</param> /// <param name=dWidth></param> /// <param name=flag>压缩质量(数字越小压缩率越高)...
本文实例展示了DevExpress实现GridControl列头绘制Checkbox的方法,具体实现方法如下: 主要功能代码如下: .../// <param name=fieldName>需要绘制Checkbox的列名</param> /// <param name=e>ColumnHeaderCu
ckeditor文件上传功能,附... <param name="maximumSize">2</param> <param name="savePath">/userfiles/source</param> <result name="success" type="freemarker">/users/uploadresult.ftl</result> </action>
/// <param name="inputFilePath">输入文件路径</param> /// <param name="outputFilePath">输出文件路径</param> /// <param name="startPageIndex">开始页数</param> /// <param name="endPageIndex">结束页数...
窗体打印报表文件 步奏: 1.添加 DataSet,在 DataSet 里面创建要打印的数据表 2.创建 Report1.rdlc 文件,将上一步创建的 DataSet 关联进来。 3.根据自己的需求设计报表... /// <param name="param">报表的参数</param>
/// <summary> /// 板卡类型 /// </summary> public enum BOARD_TYPE_DS : uint { DS400XM = 0, //M卡 DS400XH = 1, //H卡 DS4004HC = 2, //4004HC DS4008HC = 3, //4008HC DS4016HC = 4, //4016HC DS...
/// <param name="Path">文件路径</param> /// <param name="Condition">分割方式</param> /// <param name="Num">侵害参数</param> /// <param name="SavePath">保存路径</param> /// <param name="FileName">...