用servlet实现excel文件下载,用迅雷下载时文件名问题

用servlet实现的excel下载,在用浏览器直接下载时,获得的文件名是设置在header中的文件名,

但如果用迅雷下载,生成的文件名却成了servlet的名称,导致文件无法打开,

在网上搜索了下,response.setContentLength()和response.setContentType()可以解决,但我这就是不行啊

附上代码

OutputStream out = null;

//文件名转码

if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0 || request.getHeader("User-Agent").toLowerCase().indexOf("chrome") > 0){

fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");//火狐和谷歌

} else if(request.getHeader("User-Agent").toLowerCase().indexOf("MSIE") > 0){

fileName = URLEncoder.encode(fileName,"UTF-8");//IE

}

response.setHeader("Content-Disposition","attachment;filename=" + fileName);

response.setContentLength((int)file.length());

response.setcontentType("application/vnd.ms-excel;charset=utf-8");

out = response.getOutputStream();

BufferedInputStream bis = null;

BufferedOutputStream bos = null;

try{

bis = new BufferedInputStream(new FileInputStream(file));

bos = new BufferedOutputStream(out);

byte[] buff = new byte[2048];

int bytesread = 0;

while((bytesread = bis.read(buff, 0, buff.length)) != -1){

bos.write(buff, 0 ,bytesread);

} catch (IOException e){

e.printStackTrace();

} finally {

out.flush();

// 关流什么的省略了

}

}

大概基本代码就是上面这些了,请各位看看是什么问题啊

------解决思路----------------------

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//processRequest(request, response);

String fileName = "", fileName1 = "", flag = "", filePath = "", logPath = "";

Object file = new Object();

FileInputStream fis = null;

BufferedOutputStream out = null;

try {

if (request.getParameter("filename") != null) {

fileName = request.getParameter("filename");

}

fileName1 = StringUtil.toUtf8String(fileName.substring(fileName.lastIndexOf("/") + 1));

response.setContentType("application/octet-stream");

response.setContentType("application/OCTET-STREAM;charset=UTF-8");

response.setHeader("Content-Disposition", "attachment;filename=" + fileName1);

filePath = InitParameter.getRealPath() + "\\" + InitParameter.getUploadFile_Path() + "\\";

file = new File(filePath + fileName);

try {

fis = new FileInputStream((File)file);

out = new BufferedOutputStream(response.getOutputStream());

byte[] buffer = new byte[1024];

int len;

while ((len = fis.read(buffer)) != -1) {

out.write(buffer, 0, len);

out.flush();

}

} catch (FileNotFoundException e) {

throw new AppException("您下载的文件文件不存在。");

}

} catch (Exception e) {

String msg = "";

response.reset();

response.setContentType("text/html;charset=UTF-8");

if (e.getLocalizedMessage() != null) {

msg = e.getMessage();

} else {

msg = "系统错误,捕捉的错误类型为" + e.getClass();

}

response.getWriter().println("");

} finally {

try {

if (fis != null) {

fis.close();

}

if (out != null) {

out.close();

}

if (request.getParameter("del") != null) {

((File)file).delete();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

------解决思路----------------------

问题解决了吗?也遇到这个问题

response.setContentType("application/octet-stream");

response.setContentLength(fileLength);

关键设置都有了,迅雷下载就是不行

------解决思路----------------------

response.setContentType("application/force-download");

response.setHeader("Content-Disposition","attachment;filename="+file.getName());

response.setHeader("Content-Length",file.length()+"");

这样设置试试

------解决思路----------------------

我也被坑过  最后我就直接给文件路径下载

java迅雷下载excel,用servlet实现excel文件下载,用迅雷下载时文件名有关问题相关推荐

  1. java迅雷下载excel,Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)...

    (一) 如果在迅雷的下载对话框中点取消,则会使用IE的下载,这里的文件又是正确的了: 怀疑迅雷是根据下载对话框中的网址重新请求下载,与发起请求的页面已经无关,而IE又不会把ViewState信息传到迅 ...

  2. java批量文件打包成压缩成zip下载和大量数据导出excel时的处理方法

    对于我们来说,java导出数据成excel或其他数据文件,或者下载资源是开发中的家常便饭, 但是在导出的时候,如果点击一个按钮导出几百万条数据,如果不作处理的话很可能会出现一系列的问题. 这里介绍打包 ...

  3. Java使用EasyExcel导出简单、复杂excel,以及多个excel打包导出下载zip

    EasyExcel是一款阿里开源的一款非常优秀Excel导入导出工具,使用内存小,处理速度快,使用方便,正好最近项目中有用到多个excel导出下载的功能,便记录下 EasyExcel使用git地址:G ...

  4. java实现文件下载,批量下载,文件在线预览,word转pdf,excel转pdf

    pdf,excel转word所需jar包  网盘链接  提取码:4gmw 目录 1.在resources下新建license.xml 2.文件转换工具类 3.文件下载 4.批量下载 5.在线打开文件 ...

  5. java excel api 下载文件_java excel api实现输出EXCEL文件下载

    java excel api实现输出EXCEL文件下载 [// 下载本地文件String fileName = 苹果知识库授权网点整理汇总副本20130210.xls.toString(); // 文 ...

  6. java excel 导出_java导出Excel通用方法实例

    数据导出到Excel几乎是所有客户都会提出的一个需求.下面我就分享一下我的代码. 首先需要引入的jar包: 然后就是正式代码了. package lcy._41_50; import java.io. ...

  7. java数据生成excel_Java 数据库数据生成Excel

    采用jxl.jar生成Excel 项目开发注意事项: 1:导入从网上下载的jar包: mail.jar 和 activation.jar 2:删掉C:\Program Files\MyEclipse\ ...

  8. java excel导出2007_java操作excel文件,实现批量导出,和导入

    一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...

  9. WEB下载数据量大的EXCEL解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 思路:需要2次请求,第一次ajax请求把数据查询出来,按照1000条数据一个sheet,在后台生成临时文件,并把文件名称返回给 ...

最新文章

  1. AI开源评测基准AI-Rank,为开源建立标准
  2. C++中重载赋值运算符=
  3. python输入一个正整数n求下列算式的值_C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值。,C语言 编写一个程序,输入一个正整数,求出它是几位数。...
  4. 设计模式 学习笔记(1)简单工厂模式、策略模式
  5. 任何比较的排序algorithm都需要nlogn
  6. Hybris service layer和SAP CRM WebClient UI架构的横向比较
  7. 【IT笔试面试题整理】删除无序链表中重复的节点
  8. .NET 也有 Husky 了
  9. elementUI vxe-table结合使用(通用表格)
  10. 微博短视频千万级高可用、高并发架构如何设计?
  11. 9.广义霍夫变换——广义霍夫变换算法和识别中的应用、现在的霍夫算法及识别中的应用_2
  12. X64_Xcelera-CL_PX4采集卡测试记录
  13. Codeforces D546:Soldier and Number Game
  14. MySQL递归查询 三种实现方式
  15. H265H264视频流播放
  16. 整理最全的Java笔试题库之问答题篇-国企笔试题库
  17. VC6.0致命错误 RC1015: 无法打开包含文件 'afxres.h'.解决方法
  18. qq文件对方接收后一定会有提示吗_QQ接收别人发的文件怎么设置不弹出接收信息...
  19. 臻图信息构建数字孪生港口船舶停靠管理系统,赋能港口创新发展
  20. java学习2022-6-6

热门文章

  1. 计算机任务驱动法教学课题,任务驱动教学法与计算机教学
  2. 宽屏企业网站源码中英php_蓝色大气企业网站php源码中英双语物流公司 通用企业模板带后端...
  3. UESTC 758 P酱的冒险旅途
  4. Subsurface scattering
  5. 数据采集+数据可视化练习(2022-1-6)
  6. 计算机室内设计 cad 论文,CAD室内设计毕业答辩论文.doc
  7. 五一假期搭建个django后端项目
  8. 生产管理数据分析可视化
  9. uniApp的学习开发小程序(一)小程序基础搭建和基础部署
  10. 【分享】网络安全系列丛书