Servlet下载文件迅雷不支持问题真相之一
问题描述
最近在做一个下载文件的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获取请求信息参考http://my.oschina.net/hlevel/blog/106622
并且,最最关键的是,我的Servlet下载的文件是动态生成的,下载之后就会删除临时文件,所以迅雷请求多次的时候就悲催了
解决办法
迅雷下载失败的根本原因在于临时文件在Servlet被访问一次之后就删除了,后面的请求都获取不到文件内容
既然如此,解决方法如下:
方法一:下载的临时文件不要立即删除,可以通过定时器定时清理
方法二:想办法找到迅雷下载和浏览器下载请求信息的区别,另寻其他解决办法……
Servlet下载文件迅雷不支持问题真相之一的更多相关文章
- Servlet 下载文件
这几天有点懒散,还好没有忘记看书,上周去了国家图书馆翻阅了一些和Java相关的书籍,其实这些书都是自己以前看过或者听过,按理来说,不应该看自己已经看过的书籍,应该找一些最新的书籍去看,但是每次走到书架 ...
- Servlet下载文件和http响应
下载文件等: 1.得到公共的内容ServletContext sc = this.getServletContext(); 2.在链接名字后面加个? 一个参数?参数1=值 两个参数?参数1=值& ...
- Servlet 下载文件及支持中文文件名
Sevlet 下载pdf文件 支持中文文件名 package html2pdf.controller; import java.io.File; import java.io.FileInputStr ...
- servlet下载文件
package myjava.cn; import java.io.FileInputStream; import java.io.IOException; import java.io.InputS ...
- vue下载文件
import fileDownload from 'js-file-download' let params = { ", ", "filename":&quo ...
- web下载文件夹
1.文件下载有两种方式:一种是超链接,一种是Servlet提供下载. 2.超链接下载时:当文件可以在网页直接打开时,会直接打开文件,而不是下载,当文件打开不了时,会提供下载窗口. 3.超链接下载原理 ...
- springmvc和servlet在上传和下载文件(保持文件夹和存储数据库Blob两种方式)
参与该项目的文件上传和下载.一旦struts2下完成,今天springmvc再来一遍.发现springmvc特别好包,基本上不具备的几行代码即可完成,下面的代码贴: FileUpAndDown.jsp ...
- servlet实现文件上传,预览,下载和删除
一.准备工作 1.1 文件上传插件:uploadify: 1.2 文件上传所需jar包:commons-fileupload-1.3.1.jar和commons-io-2.2.jar 1.3 将数 ...
- Servlet实现文件,图片等的下载 含代码
实现文件的下载源代码如下: package com.fxl.servlet; import java.io.FileInputStream;import java.io.IOException;imp ...
随机推荐
- Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)【转】
[转自:]http://blog.csdn.net/hitwengqi/article/details/8008203 最近一直在自学Hadoop,今天花点时间搭建一个开发环境,并整理成文. 首先要了 ...
- 有用的SAP System Administration T-CODE
一,SAP系统管理常用到的事务代码1. SM51 SAP Servers System Monitoring2. SM21 SAP系统日志3. SRZL SAP计算机中心管理系统(CCMS) ...
- git stash 暂存恢复和文件误删恢复
git commit提交文件,服务器返回本地文件有修改. 1.git stash :暂存本地代码 2.git pull origin develop : 获取远程分支代码 3.git stash po ...
- hdu1839(二分+优先队列,bfs+优先队列与spfa的区别)
题意:有n个点,标号为点1到点n,每条路有两个属性,一个是经过经过这条路要的时间,一个是这条可以承受的容量.现在给出n个点,m条边,时间t:需要求在时间t的范围内,从点1到点n可以承受的最大容量... ...
- Yum Priorities
简介 Linux 发行版比较多,同时还有很多个人或组织维护了某些特定用途的安装/升级源.Yum Priorities 插件可以用来强制保护源.它通过给各个源设定不同的优先级,使得系统管理员可以将某些源 ...
- CTF之文件包含的猥琐思路
From: i春秋 百度杯”CTF 一: <?php include "flag.php"; //包含flag.php这个文件 $a = @$_REQUEST['hello' ...
- Beef安装与简单使用
安装 Debian / Ubuntu 安装依赖 sudo apt-get update sudo apt-get install curl git curl -sSL https://raw.gith ...
- iis部署wcf服务
win8的如下 . 打开iis新建一个应用程序MyWcfTest 检查iis中的处理程序映射,含有svc说明激活了. 然后把svc文件和webconfig放入到指定的目录上. 使用地址http://l ...
- sed实现文件自我复制
sed -n '1,$'p test >> test
- asp.net无刷新上传(带预览)
1.有个图片 <img id="Image1" title="用于广告栏及图文框缩略图" width="150" height=&qu ...