java迅雷下载excel,用servlet实现excel文件下载,用迅雷下载时文件名有关问题
用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文件下载,用迅雷下载时文件名有关问题相关推荐
- java迅雷下载excel,Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)...
(一) 如果在迅雷的下载对话框中点取消,则会使用IE的下载,这里的文件又是正确的了: 怀疑迅雷是根据下载对话框中的网址重新请求下载,与发起请求的页面已经无关,而IE又不会把ViewState信息传到迅 ...
- java批量文件打包成压缩成zip下载和大量数据导出excel时的处理方法
对于我们来说,java导出数据成excel或其他数据文件,或者下载资源是开发中的家常便饭, 但是在导出的时候,如果点击一个按钮导出几百万条数据,如果不作处理的话很可能会出现一系列的问题. 这里介绍打包 ...
- Java使用EasyExcel导出简单、复杂excel,以及多个excel打包导出下载zip
EasyExcel是一款阿里开源的一款非常优秀Excel导入导出工具,使用内存小,处理速度快,使用方便,正好最近项目中有用到多个excel导出下载的功能,便记录下 EasyExcel使用git地址:G ...
- java实现文件下载,批量下载,文件在线预览,word转pdf,excel转pdf
pdf,excel转word所需jar包 网盘链接 提取码:4gmw 目录 1.在resources下新建license.xml 2.文件转换工具类 3.文件下载 4.批量下载 5.在线打开文件 ...
- java excel api 下载文件_java excel api实现输出EXCEL文件下载
java excel api实现输出EXCEL文件下载 [// 下载本地文件String fileName = 苹果知识库授权网点整理汇总副本20130210.xls.toString(); // 文 ...
- java excel 导出_java导出Excel通用方法实例
数据导出到Excel几乎是所有客户都会提出的一个需求.下面我就分享一下我的代码. 首先需要引入的jar包: 然后就是正式代码了. package lcy._41_50; import java.io. ...
- java数据生成excel_Java 数据库数据生成Excel
采用jxl.jar生成Excel 项目开发注意事项: 1:导入从网上下载的jar包: mail.jar 和 activation.jar 2:删掉C:\Program Files\MyEclipse\ ...
- java excel导出2007_java操作excel文件,实现批量导出,和导入
一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...
- WEB下载数据量大的EXCEL解决方案
2019独角兽企业重金招聘Python工程师标准>>> 思路:需要2次请求,第一次ajax请求把数据查询出来,按照1000条数据一个sheet,在后台生成临时文件,并把文件名称返回给 ...
最新文章
- AI开源评测基准AI-Rank,为开源建立标准
- C++中重载赋值运算符=
- python输入一个正整数n求下列算式的值_C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值。,C语言 编写一个程序,输入一个正整数,求出它是几位数。...
- 设计模式 学习笔记(1)简单工厂模式、策略模式
- 任何比较的排序algorithm都需要nlogn
- Hybris service layer和SAP CRM WebClient UI架构的横向比较
- 【IT笔试面试题整理】删除无序链表中重复的节点
- .NET 也有 Husky 了
- elementUI vxe-table结合使用(通用表格)
- 微博短视频千万级高可用、高并发架构如何设计?
- 9.广义霍夫变换——广义霍夫变换算法和识别中的应用、现在的霍夫算法及识别中的应用_2
- X64_Xcelera-CL_PX4采集卡测试记录
- Codeforces D546:Soldier and Number Game
- MySQL递归查询 三种实现方式
- H265H264视频流播放
- 整理最全的Java笔试题库之问答题篇-国企笔试题库
- VC6.0致命错误 RC1015: 无法打开包含文件 'afxres.h'.解决方法
- qq文件对方接收后一定会有提示吗_QQ接收别人发的文件怎么设置不弹出接收信息...
- 臻图信息构建数字孪生港口船舶停靠管理系统,赋能港口创新发展
- java学习2022-6-6