Servlet下载文件迅雷不支持问题真相之一
2015-04-17 16:32
281 查看
问题描述
最近在做一个下载文件的Servlet,直接使用浏览器的下载功能,完美支持,结果测试人员使用迅雷下载,就不行了,下载也能成功完成,只是迅雷下载的文件大小是悲催的0KB
真相搜罗
网上有很多帖子说Servlet怎么支持迅雷下载的,需要设置response参数,比如这个
http://buerkai.iteye.com/blog/1756929
也有讨论迅雷断点续传协议的,比如这个
http://zhidao.baidu.com/link?url=KbZQdoNg3W7iWS5PQ8KqSY0PeVzzkPijD58FPXWYhWzJtf534_FzHd1ChNBtqA2mQjGKC8K9YneVu3iut7Bv30K6G-6WlY3H8wG_59CxMTO
类似的帖子有很多,可是搜来搜去,改来改去,我的Servlet下载文件就是不能支持迅雷
问题分析
经过多次测试,发现迅雷下载文件,会访问两次Servlet,网上也有说是多次的,我测试很多次都是两次,而浏览器下载文件,只访问一次Servlet,这是一个很大的区别
为了一探究竟,也对比过浏览器下载和迅雷下载的请求信息,发现如果是弹出框下载文件,迅雷的两次请求referer参数会有差异
Servlet获取请求信息参考/article/3491132.html
并且,最最关键的是,我的Servlet下载的文件是动态生成的,下载之后就会删除临时文件,所以迅雷请求多次的时候就悲催了
解决办法
迅雷下载失败的根本原因在于临时文件在Servlet被访问一次之后就删除了,后面的请求都获取不到文件内容
既然如此,解决方法如下:
方法一:下载的临时文件不要立即删除,可以通过定时器定时清理
方法二:想办法找到迅雷下载和浏览器下载请求信息的区别,另寻其他解决办法……
相关文章推荐
- Servlet下载文件迅雷不支持问题真相之一
- 网上只写了一个文件断点下载的例子! 我仿照别人得例子 自己增加了自己代码,异步下载文件 支持断点下载 多任务下载! 如有问题 请联系我
- Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)
- Spring MVC 文件下载IE浏览器不支持的问题解决
- Asp.net生成Excel文件并下载(解决使用迅雷下载页面而不是文件的问题)
- Firefox下载servlet文件时,文件名截断问题
- Asp.net生成l文件并下载-----解决使用迅雷下载页面而不是文件的问题
- iis7如何添加mime类型支持所有后缀名文件下载的方法(解决特殊后缀文件无法下载的问题)
- 解决jsp下载文件,迅雷下载路径不显示文件名称的问题
- 【javaweb:servlet】从服务端下载中文名称文件应该注意的问题!!!
- Spring mvc 文件下载,及不支持IE下载问题解决方法
- servlet返回application/json数据类型在ie浏览器中提示下载文件问题
- 解决springmvc中文件下载功能中使用javax.servlet.ServletOutputStream out = response.getOutputStream();后运行出异常但结果正确的问题
- 让IIS支持.apk文件的下载(MIME类型问题)
- 编译Servlet时跳出下载文件对话框的问题
- DotNetBrowser支持PDF文件下载的问题
- mp4文件导致迅雷监视下载问题
- APK IPA --------------- iis7如何添加mime类型支持所有后缀名文件下载的方法(解决特殊后缀文件无法下载的问题)
- 教你如何用迅雷下载百度云资源、如何解决百度云大文件下载、限速问题。
- 使文件下载的自定义连接支持 FlashGet 的断点续传多线程链接下载! JSP/Servlet 实现!