以下代码用于准备要下载的文件:
File downloadFile = new File(ftpPath + File.separator + company.toLowerCase() + File.separator + "download" + File.separator + paramFileName);
FileInputStream fis = new FileInputStream(downloadFile);
BufferedInputStream bis = new BufferedInputStream(fis);
response.setContentType("binary");
response.setHeader("Content-Disposition", "attachment; filename="+paramFileName);
response.setHeader("Content-Length",String.valueOf(downloadFile.length()));
response.setHeader("Content-Encoding", "utf-8");
ServletOutputStream sos = response.getOutputStream();
IOUtils.copy(bis, sos);
sos.flush();
fis.close();
bis.close();
sos.close();
单击并下载文件时,在下载进度条中正确显示总文件大小时,该文件实际上从未完成下载。对于大文件,它大约有95%以上的方式,然后完全停止。对于较小的文件,结果不太一致,但文件永远不会完整下载。
如果删除以下行,则文件会完全下载:
/*
response.setHeader("Content-Length",String.valueOf(downloadFile.length()));
response.setHeader("Content-Encoding", "utf-8");
*/
但是,文件开始下载时不会给出文件总大小。这对我们的用户来说非常不方便,他们可能正在下载一个大文件,并且想知道一个大概的"完成时间"号。
是否有修复程序可以让文件完全下载并且还能准确显示文件大小?
感谢您的帮助
注意:摆脱DataInputStream,因为它从未使用过。