以前并没有特别注意过,文件下载都是输出一个流文件,放在response中返还给浏览器就可以下载文件了。上次突然发现迅雷不能下载这样的文件(虽然现在迅雷用的比较少了)。

上网查了一部分资料,整理常见的一些说法如下(因为资料来源比较琐碎,就不特别记载了,事实上我没有看到特别完整的解决方案和原因分析):

  1. response返回流文件时使用了session,迅雷会两次请求servlet导致session丢失(也就是说迅雷真正下载的地址是下不到数据的)。

  2. response没有返回文件信息或者设置正确的文件长度,常见设置是:

    response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
    response.addHeader("Content-Length", "" + file.length());
    response.setContentType("application/octet-stream");
  3. 有一种解决方案是在服务器生成一个文件让迅雷下载(返回指定地址给迅雷,注意要是有效地址,即任意访问都能下载的地址)

总结:

  1. Java下载文件离不开response,不能下载往往是一些其他因素引起的。

  2. 看来有时间要试着写一个Demo玩一下各种上传下载(包括2GB以上大文件、断点续传等),也可以观摩一下开源的文件处理程序,比如百度的WebUploader

文件下载(浏览器下载与迅雷下载)相关推荐

  1. 前端随记---文件下载启用浏览器下载和迅雷下载

    一.前言 最近在写自己的项目时,要实现文件下载功能.然后想起一般在资源网站下载文件的时候,它们都是给出一个资源链接,然后调用浏览器下载或启用外部的程序(如:迅雷下载), 因此想偷个懒,在自己项目中使用 ...

  2. 360浏览器取消默认迅雷下载

    360浏览器点击链接下载,默认弹出迅雷下载,但是有时候容易出现下载失败 这个时候就要取消默认的迅雷下载方式 在迅雷设置里面找到下载接管设置,取消接管所有浏览器 解决办法:

  3. 如何在火狐浏览器中使用迅雷下载

    火狐浏览器用迅雷下载的话,需要下载一个火狐的插件,叫flashgot, 你可以在火狐浏览器的工具-附加组件里搜一下,安装就可以了,同时还要设置迅雷,打开迅雷, 工具-浏览器支持,然后添加火狐的就行了. ...

  4. 《唐山大地震》高清下载,迅雷下载,在线观看!

    郑重声明:本作品之片源,字幕均来自互联网,版权归电影公司所有.任何组织和个人不得公开传播或用于任何商业盈利用途,否则一切后果由该组织或个人承担!请自觉与下载后24小时内删除.如果喜欢本片,请购买正版! ...

  5. java 文件下载浏览器没有弹出下载框

    原因是我在前端用了ajax请求,后端用了二进制流来实现,而ajax不支持流形式,改成了表单提交解决.

  6. php下载链接 迅雷下载,php实现把url转换迅雷thunder资源下载地址的方法

    php实现把url转换迅雷thunder资源下载地址的方法 本文实例讲述了php实现把url转换迅雷thunder资源下载地址的方法.分享给大家供大家参考.具体方法分析如下: 如果你知道迅雷地址的生成 ...

  7. python迅雷远程下载页面_【教程】Chrome浏览器添加迅雷下载支持

    2019年4月28日更新: 目前官方最新版本的迅雷X已经实现自动安装Chrome扩展,无需手动安装. 请仍在使用老版本迅雷的雷友升级到官方最新版本的迅雷X. 以下内容已经过期 最近一段时间,Googl ...

  8. 浏览器默认迅雷下载问题

    在csdn下载文件时,浏览器默认使用迅雷下载,导致rar包下载后仅有一个html文件(原因未明),如下图: 可以取消迅雷对浏览器的监视,恢复默认下载方式. :

  9. VB 迅雷下载地址解密函数

    它可将加密过的迅雷下载地址URL转换成真正的下载地址. Private Sub Form_Load()      '解密      MsgBox thunderToURL("thunder: ...

最新文章

  1. LeetCode 1021:Remove Outermost Parentheses
  2. getHibernateTemplate()的用法 (转)
  3. Adapterview和adapter的联系
  4. LFS 8.3 中文翻译版本发布!
  5. 用Silverlight做广告Banner
  6. python自学笔记之开源小工具:SanicDB介绍
  7. 前端学习(955):移动端特效导读
  8. Rabbtmq Confirm 确认消息
  9. 13001.udp广播接收程序(python)
  10. 本地未安装Oracle数据库,如何连接远程Oracle数据库
  11. Python菜鸟入门:day18编程学习
  12. 怎样的数据分析才有价值
  13. 【转】7个顶级心理预言
  14. SQL,不定条件查询,case,when,then,end,isnull,join,inner,on
  15. 游戏开发最佳10个工具与技术方案
  16. Termux使用教程
  17. JavaScript学习简单总结
  18. IcedTea6 1.9已通过HotSpot 17更新为OpenJDK6 b20
  19. 单元一: 全桥驱动电路(驱动MOS/IGBT均适用,附带硬件)
  20. 基于java的springboot宠物商城系统毕业设计springboot开题报告

热门文章

  1. SQL Server的密码忘了怎么设置新密码
  2. 电脑桌面图标都变成lnk后缀的三种解决办法
  3. js过滤树形结构数据并获取新的树形结构
  4. form表单中id与name的区别
  5. Buuctf-WEB-Havefun(WP)
  6. 机器人对话常用语模板_世界首个机器人观音在岛国问世,请问AI开光还会远吗?...
  7. php的表达爱意的一句代码,一句表达爱意的古词 最能表达爱的一句话
  8. 彩色图片变成黑白打印风格图片的一种方式
  9. c语言字符型数据是,C语言字符型数据.doc
  10. Spring框架学习笔记,超详细!!(4)