日期:2014-05-20  浏览次数:20766 次

高人请进,大家都来谈谈Struts2的文件下载,用迅雷下载失败的问题
RT,用网页下载没问题

大家当时都是怎么解决的


------解决方案--------------------
我可以用迅雷下载呀. 你是用stream result吗?
------解决方案--------------------
每天回复加10分。
------解决方案--------------------
会不会是 后缀名的问题啊 比如 a.b.c.txt导致的啊 你用不同的浏览器试试 也可能是浏览器问题
------解决方案--------------------
我的没问题啊?要不你把相关代码贴一下看看!
------解决方案--------------------
其实对于文件下载,一般只要做一个链接就可以了。例如:

<a href="http://www.xxxx.com/cxxx/dd/dd/ff/dw/p.mp3" target="_blank"> 下载 </a>


只要你的服务器相关目录开放相应权限,就可以下载了。
------解决方案--------------------
防火墙,网关,都可以屏蔽 迅雷,看看是不是这方面的原因。。。
------解决方案--------------------
struts2文件下载没问题
------解决方案--------------------
应该不是struts2的问题吧,我这里可以用啊
------解决方案--------------------
action这样样写:
 public String downloadFile() {
try {
HttpServletResponse response = ServletActionContext.getResponse();
File f = new File(DIR_PATH+"/"+fileName);
BufferedInputStream br = new BufferedInputStream(
new FileInputStream(f));
byte[] buf = new byte[1024];
int len = 0;
response.reset(); // 非常重要

response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename="
+ f.getName());

OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0) {
out.write(buf, 0, len);
}
br.close();
out.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}

return SUCCESS;
}

struts后台配置文件可以这样写:
<action name="download" class="com.hotel.action.FileDownloadAction">
<exception-mapping result="client-abort-exception" exception="org.apache.catalina.connector.ClientAbortException"> 
</exception-mapping>
<result type="stream">
<param name="contentType">application/x-msdownload</param>
<param name="contentDisposition">filename=${fileName}</param>
<param name="inputName">downloadFile</param>
</result>
</action>

用以上的方式试试下载看看!
------解决方案--------------------
搭车提问 

Struts2 批量下载如何实现? 要速度比较快~1
------解决方案--------------------
用网页下载你请求的是你所写的程序!迅雷下载得到文件的文件的全路径。也就是说当用迅雷下载得时候下载得其实是你所请求的地址,明白了吧?