我使用java代码从服务器下载文件,文件下载后,文件将从服务器中删除。文件总大小为200GB。下载开始并显示下载成功。当我检查下载的文件大小只有3.3 GB。并且文件也不会被删除。我检查了错误日志,但没有日志。这是我的代码。
byte b[] = new byte[2048];
int len = 0;
filein = new BufferedInputStream(new FileInputStream(file));
output = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/force-download");
response.setHeader("content-Disposition", "attachment; filename=" + fname); // downloaded file name
response.setHeader("content-Transfer-Encoding", "binary");
while ((len = filein.read(b)) > 0) {
output.write(b, 0, len);
output.flush();
}
output.close();
filein.close();
file.delete(); // delete file
请提出我错过的内容..
答案 0 :(得分:1)
我认为您的服务器在响应开始占用内存太大的大小后会终止下载(结束响应)。检查可用内存是否有问题。 Linux有一个守护进程,如果事情开始变得严重,它将简单地杀死高内存使用进程。
如果服务器突然结束响应,则可能是客户端(浏览器)仍然认为下载成功。这也可以解释为什么文件不被删除,如果它是被抛出的异常。
我将while循环包装在try {..} catch中(Throwable t)//捕获所有异常和错误 看看会发生什么。