`
wenlongsust
  • 浏览: 75924 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

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被访问一次之后就删除了,后面的请求都获取不到文件内容

既然如此,解决方法如下:
方法一:下载的临时文件不要立即删除,可以通过定时器定时清理
方法二:想办法找到迅雷下载和浏览器下载请求信息的区别,另寻其他解决办法……

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    java jsp+servlet实现文件下载(而不是在网页中显示出文件内容) 迅雷下载功能.zip

    这个链接会指向一个`servlet`,由`servlet`来处理实际的文件读取和下载逻辑。 1. **创建Servlet**:首先,我们需要创建一个自定义的`servlet`,例如`FileDownloadServlet`。在`src`目录下的Java源代码文件中,我们...

    servlet文件下载项目

    总结一下,这个"Servlet文件下载项目"展示了如何使用Servlet技术实现一个简单的文件下载服务。通过理解Servlet的工作原理、HTTP响应头的设置以及Java I/O流的使用,我们可以构建出更复杂、更安全的文件下载系统。这...

    servlet 文件上传下载例子

    在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...

    java servlet实现文件下载

    Java Servlet是一种Java编程语言...通过这个简单的Java Servlet实现,我们可以为用户提供一个安全、可控的文件下载服务。理解这些基本步骤和相关的HTTP概念,将有助于你更好地设计和实现Web应用程序中的文件下载功能。

    servlet下载文件

    ### Servlet下载文件知识点详解 #### 一、Servlet简介与应用场景 Servlet是一种运行在服务器端的小程序,主要用于处理HTTP请求并生成动态网页。Servlet是Java Web开发的基础技术之一,广泛应用于构建动态网站和Web...

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    当你遇到“找不到javax.servlet.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. **Java Servlet简介** Java Servlet是Java平台上的一个标准,用于扩展服务器...

    ajax+json+servlet下载

    结合JSON(JavaScript Object Notation)和Servlet,我们可以实现一个高效且用户友好的文件下载系统。以下是对这个"ajax+json+servlet下载"主题的详细解释。 首先,我们需要理解Ajax的核心原理。Ajax通过...

    基于servlet的文件下载代码

    在Web应用程序开发过程中,文件上传和下载是常见的需求之一。特别是在企业级应用中,用户经常需要下载诸如报告文档、数据备份等文件。Java Servlet作为一种强大的服务器端技术,可以很好地实现这一功能。本文将详细...

    答Servlet下载文件的附件

    这篇博客"答Servlet下载文件的附件"可能涉及了如何利用Servlet来实现文件的下载功能,让我们深入探讨这个话题。 首先,我们需要了解Servlet生命周期中的service()方法。当一个HTTP请求到达服务器,Servlet容器(如...

    servlet上传下载文件

    总结来说,"servlet上传下载文件"是一个使用Java Servlet实现的Web应用程序,允许用户上传文件至服务器,并能够从服务器下载这些文件。这个系统的核心在于Servlet的`doPost`或`doGet`方法,它们处理HTTP请求,读取或...

    Servlet中文件上传和下载

    以下是一个简单的文件下载Servlet示例: ```java @WebServlet("/FileDownloadServlet") public class FileDownloadServlet extends HttpServlet { protected void doGet(HttpServletRequest request, ...

    servlet线程安全问题

    当客户端第一次请求某个 Servlet 时,Servlet 容器将会根据 web.xml 配置文件实例化这个 Servlet 类。当有新的客户端请求该 Servlet 时,一般不会再实例化该 Servlet 类,也就是有多个线程在使用这个实例。这样,当...

    servlet实现文件上传下载

    总结来说,实现Servlet文件上传下载需要理解Servlet生命周期、HTTP请求处理、多部分数据解析以及文件I/O操作。Apache Commons FileUpload库简化了这一过程,但理解其背后的原理对于解决可能出现的问题和优化性能至关...

    一个支持servlet的web服务器.rar

    这个压缩包“一个支持servlet的web服务器.rar”很可能包含了实现这一功能的源代码、配置文件或者是一个预编译好的服务器软件,允许开发者在本地环境中运行和测试Servlet应用。下面我们将深入探讨Servlet以及如何在...

    文件上传与下载servlet

    在IT行业中,文件上传与下载是Web应用中常见的功能,特别是在企业级系统中,例如文档管理系统、在线教育平台等。Servlet作为Java Web开发中的一个重要组件,常被用来处理这些操作。下面将详细介绍如何使用Servlet...

    用servlet写的文件上传及下载功能带进度条

    自己用servlet写的文件上传及下载功能带进度条 主要用到两个jar:commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar 内容介绍: com.fm.FileManagerService:一个servlet用来实现主要的文件上传下载逻辑的 ...

    jsp+servlet实现文件上传下载

    在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与下载。 #### jspSmartUpload组件介绍...

    jsp+servlet实现大型文件下载

    在IT行业中,Web开发是不可或缺的一部分,而Servlet和JSP(JavaServer Pages)是Java Web应用中的核心组件,尤其在处理动态网页和交互性任务时。本教程将深入讲解如何利用JSP和Servlet来实现大型文件的下载功能,这...

    【Demo Project】ajaxSubmit+Servlet表单文件上传和下载

    本项目【Demo Project】利用AjaxSubmit结合Servlet技术,提供了一种高效、异步的方式处理文件的上传和下载,提升了用户体验。 一、AjaxSubmit简介 AjaxSubmit是jQuery Form插件中的一个方法,它允许我们在不刷新...

    使用Servlet实现文件的上传与下载

    本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,这对于任何Web应用程序来说都是至关重要的。 首先,我们来了解一下Servlet的基本概念。Servlet是Java编程语言中一个用于扩展服务器功能的接口,主要应用...

Global site tag (gtag.js) - Google Analytics