自己写Demo的时候总会遇到各种各样的问题,在博客记下我的心得,也希望遇到和我一样问题的同学可以少走弯路。
以下是struts2实现文件下载的方法:
1.创建Action类,包含返回InputStream的方法,该方法主要是将下载文件以字节流返回。
2.struts.xml中设置result类型是stream,其他需要设置的属性: contentType、inputName、contentDisposition、bufferSize
以下是FileDownloadAction:
public class FileDownAction extends ActionSupport {
//依赖注入属性,注入struts.xml文件inputPath。
private String inputPath;
public void setInputPath(String inputPath) {
this.inputPath = inputPath;
}
//返回字节流,在struts.xml中设置的inputName属性的值是该方法名字除去get(targetFile)
public InputStream getTargetFile()throws Exception{
return ServletActionContext.getServletContext().getResourceAsStream(inputPath);
}
public String execute()throws Exception{
return SUCCESS;
}
}
以下是strutsx.xml,的action
<action name="fileDownAction" class="com.down.action.FileDownAction">
<!-- 设定文件路径 -->
<param name="inputPath">/down/01.jpg</param>
<result name="success" type="stream">
<!--设定文件头。书上说是image/jpg,执行后图片直接打开,没有下载 -->
<param name="contentType">application/octet-stream</param>
<!-- 去掉get的字节流方法名 -->
<param name="inputName">targetFile</param>
<!-- 下载默认文件名 -->
<param name="contentDisposition">filename="nami.jpg"</param>
<!-- 设定下载文件的缓冲大小 -->
<param name="bufferSize">4096</param>
</result>
</action>
*******************************************
以下说一下我在写DEMO过程中遇到的问题:
1.以上代码写好,部署到tomcat后,执行出现java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [targetFile] in the invocation stack 异常。
解决方法:
因为inputStream方法返回的是null值,我的tomcat没有将down文件(就是存放下载源的文件)部署上去,修改Myeclipse设置:工程文件右键 properties-->Myeclipse-->Deployment Assembly,Add一个down文件(我的文件在工程文件根目录下),然后设置Delpoy Path(/down),重新部署,问题解决。实在不行,可以直接复制上去。
2.打开网页后发现图片直接打开,没有弹出下载页面。前提:image/jpeg已经测试过
凑合的解决方法:
因为struts.xml中contentType(就是文件头)设置不对。将它设置成application/octet-stream,在chrome和firefox中可以下载,ie中还是不行。估计是IE分析文件方式独特或者不提供图片下载(图片另存为),看到一个同学用依赖注入来设定contentType,地址是:http://xiaolongfeixiang.iteye.com/blog/662479
*补充:测试过txt、jpg、rar、exe等四种格式在ie9中下载。ie9自动打开txt和jpg,rar和exe则可以下载。
firefox和chrome则以上四个都可以下载。
分享到:
相关推荐
cmd-bat-批处理-脚本-rimraf.zip
该资源文件详细介绍了如何在ADS软件中进行混频器仿真,内容涵盖了仿真设置、参数调整、结果分析等多个方面。
cmd-bat-批处理-脚本-Messagebox_Cancel_TryAgain_Continue.zip
内容概要:本文详细介绍了如何使用C#客户端实现OpcUa通讯,具体包括远程连接KEPserverEX服务器的方法及其应用。文中不仅提供了详细的环境准备工作指导,还给出了具体的代码示例用于创建会话和连接服务器,最后通过UaExpert测试工具验证了整个流程的有效性。这是一套亲测稳定高效的解决方案,适用于工业自动化领域的数据传输和控制。 适合人群:从事工业自动化领域的研发人员和技术爱好者,尤其是那些有C#编程经验并对OpcUa通讯感兴趣的开发者。 使用场景及目标:①帮助开发者掌握C#客户端连接KEPserverEX服务器的具体方法;②提供实用的代码示例和测试工具使用指南,便于快速上手;③确保数据传输的安全性和稳定性,提高工作效率。 其他说明:文章强调了环境准备的重要性,包括安装必要的开发工具和库,同时也指出了可能遇到的问题及解决办法。此外,还提到了UaExpert作为一款优秀的测试工具,在验证连接和数据交互方面的优势。
人工智能中的自动逻辑推理.zip
cmd-bat-批处理-脚本-os2_cid_install.zip
在武汉大学大地测量学基础的编程作业中,我已完成相关任务。通过使用教材中的算例进行验证,程序运行结果的误差极小,这充分证明了程序的准确性和可靠性。在公式推导过程中,我严格遵循步骤,确保每一步都清晰严谨,从而保证了最终结果的高精度。作业中还提供了灵活的选择,用户可以根据自己的需求选择正算或反算操作,并且可以手动输入任意坐标,方便进行多样化的计算和验证。
警 院指挥教学数字训练系统设计——公 安院校电子沙盘教学系统设计.zip
cmd-bat-批处理-脚本-un-java.zip
cmd-bat-批处理-脚本-SetForegroundWindow.zip
内容概要:本文详细介绍了GSP软件在航空发动机和燃气轮机模型设计中的应用。首先,讨论了如何利用GSP软件构建不同类型的航空发动机(如涡扇、涡喷、涡轴)和燃气轮机模型,涵盖了从进气道到涡轮各组成部分的建模。接着,阐述了稳态特性的循环计算方法,包括空气、燃油、燃气等组分的变换及其能量转换和物质交换的计算。最后,探讨了瞬态性能计算和部件性能衰退降级仿真,通过时间序列分析和动态仿真模块,模拟发动机在不同工况下的瞬态响应和故障数据,从而全面评估发动机的性能。 适合人群:从事航空发动机和燃气轮机研究的设计工程师、研究人员和技术专家。 使用场景及目标:适用于需要深入了解航空发动机和燃气轮机构造、稳态和瞬态性能的研究和开发项目。目标是提高对发动机工作原理的理解,优化设计流程,提升性能预测精度。 其他说明:文中提到的技术手段不仅限于理论分析,还包括实际操作层面的代码实现,帮助读者掌握具体的建模和仿真技巧。
cmd-bat-批处理-脚本-installtrusted.zip
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
威布尔杂波下扩展目标检测.zip
remotesensing-13-04370-v2.pdf
二十四节气之霜降介绍.pptx
2025年网络安全技术漏洞扫描.docx
cmd-bat-批处理-脚本-virtualcam-uninstall.zip
不完备决策表的相对约简算法.pdf
chat-box1.12.3 版本windows专用