JAVA实现文件下载,浏览器端得到数据没反应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA实现文件下载,浏览器端得到数据没反应相关的知识,希望对你有一定的参考价值。

代码如下
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException

//得到要下载的文件名称
String filename=request.getParameter("filename");
//文件存放的路径,合成绝对路径
String dir = this.getServletContext().getRealPath("/");
String filepath=dir+"bksh"+"\\"+filename;
//得到这个文件的对象
File f=new File(filepath);
//response的编码方式为.doc下载
response.setContentType("application/msword");
//写明要下载的文件的大小
response.setContentLength((int)file.length());
//文件名
response.setHeader("Content-Disposition", "attachment; filename=" + filename);

//独处文件的IO流
FileInputStream fis=new FileInputStream(file);
BufferedInputStream buff=new BufferedInputStream(fis);

byte [] b=new byte[1024];//相当读文件的缓存
long k=0;//该值用于计算当前实际下载了多少字节

//response对象得到输出流
OutputStream myout=response.getOutputStream();

//开始循环下载

while(k<file.length())

int j=buff.read(b,0,1024);
k+=j;

//将b中的数据写到客户端的内存
myout.write(b,0,j);



//将写入到客户端的内存的数据,刷新到磁盘
myout.flush();

firbug显示服务器已经返回了数据,但是貌似浏览器不任务它需要下载这些数据。。。
求高人解答,在线等

参考技术A 建议你
1.重启电脑
2.检查网速
3.换个浏览器试试,试试腾讯电脑管家-软件管理-软件仓库-浏览器-找到你想要的下载就行了
参考技术B int length = b.length;
response.setContentType("application/vnd.ms-excel");//文件格式,此处设置为excel
response.setHeader("Content-Disposition",
"attachment;filename=文件.xls");//此处需要设置下载文件的默认名称
response.setContentLength(length);
java.io.OutputStream o = response.getOutputStream();
o.write(reportContent, 0, length);
o.flush();
out.clear();
out = pageContext.pushBody();
response.flushBuffer();追问

有什么不一样么。。。

追答

区别就是我的好使...

追问

你把全部代码贴一下呗,谢了

追答

前边的操作就是得到下载结果的byte数组,然后把我这段代码粘上,就OK了。

本回答被提问者采纳
参考技术C

回答一下吧,万一有人看呢,我是用ajax请求的,所以出现了这样的问题

解决方案:javaweb实现文件下载用ajax请求(别人写的)

参考技术D 你换个浏览器试下,然后再debug你的程序看看你的输出流生成了没追问

IE firefox chrome都试了,有输出流。。。

以上是关于JAVA实现文件下载,浏览器端得到数据没反应的主要内容,如果未能解决你的问题,请参考以下文章

Java实现文件流下载文件,浏览器无反应,后台无错误!如何解决?

Java实现浏览器端大文件分片上传源码

Java实现浏览器端大文件分片上传源码

chrome点击下载excel没反应

本地文件访问json数据格式,在chrome中没反应

Javascript:来自浏览器端数据的文件的文件下载选项