我用struts2写了一个文件下载,都是常规的做法,可是下载到的是实现下载的action,即XXX.action,本来是一张GIF图片,下载后,把后缀改成.gif,即可打开浏览,请问各位高手,帮忙查找一下原因,无敌感谢!
解决方案 »
- 财付通:请问如何通过<meta name="TENCENT_ONLINE_PAYMENT" content="China TENCENT">告诉财付通处理成功?
- 用httpClient3.x发送http请求服务器得不到数据
- 建议CSDN设立JSF专栏,大家来投票吧.
- SSH开发如何生产静态页面。
- 使用tomcat过滤器实现关键字屏蔽,怎样使用HttpServletResponseWrapper?
- Request提交的东西必须是String的么??
- 跪求有关于log4j的问题
- java 记录IP
- 请看代码!我的值为什么无法提交到下一页中去?
- 一个session的超时时间应该怎么设,在tomcat的配置文件里吗?
- oscache缓存问题,如何在action中判断缓存的key已经存在了?
- java web+tomcat+花生壳动态ip配置问题
struts2 下载不用写response,我贴出我的代码吧
//private String inputPath;// 指定要被下载的文件路径
// public void setInputPath(String value) {
// inputPath = value;
// }
public void setFileName(String fileName) {
System.out.println("filename : "+fileName);
this.fileName = fileName;
}
public String download() throws Exception {
System.out.println("============================> contenttype : "+request.getContentType());
return SUCCESS;
}
public InputStream getInputStream() throws Exception {
String savedir = getPath();
File file = new File(savedir, fileName);
// 通过 ServletContext,也就是application 来读取数据
if(file.exists()){
//System.out.println("file 存在空");
//return new FileInputStream(file);
MessageInfo mi = getMessageInfoDetail();
return ServletActionContext.getServletContext().getResourceAsStream("/"+mi.getAttachPath()+"\\" +fileName);
}
//MessageInfo mi = getMessageInfoDetail();
//ServletActionContext.getServletContext().getResourceAsStream("/"+mi.getAttachPath()+"\\" +fileName);
return null;
} public String getDownloadFileName() {
String downFileName = fileName;
try {
downFileName = new String(downFileName.getBytes("ISO-8859-1"), "utf8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return downFileName;
}
struts.xml :
<package name="download" extends="struts-default" namespace="/framework">
<action name="messageAticleDownLoad" class="messageArticleAction" method="download">
<param name="fileName"></param>
<result name="success" type="stream">
<param name="contentType">
image/GIF
</param>
<param name="contentDisposition">
attachment;filename="${fileName}"
</param>
<param name="inputName">inputStream</param>
<param name="bufferSize">4096</param>
</result>
</action>
</package>jsp页面 :<s:iterator value="listPhoto" id="photo">
<a href="/framework/messageAticleDownLoad.do?fileName=
<s:property value='#photo.name'/>" ><s:property value="#photo.oldName" /></a>
<br />
</s:iterator>
<param name="contentDisposition">
attachment;filename="${fileName}"
</param>
写得不规范,应写作:
<param name="contentDisposition">
attachment;filename=${#request.fileName}
</param>。哈哈。。谢谢关注!