1

我使用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

请建议我缺少什么..

4

1 回答 1

1

我认为您的服务器在响应开始占用过多内存后会终止下载(结束响应)。检查可用内存是否存在问题。Linux 有一个守护进程,如果事情开始变得关键,它会简单地杀死高内存使用进程。

如果服务器突然结束响应,可能是客户端(浏览器)仍然认为下载成功。这也可以解释为什么如果抛出异常,文件不会被删除。

我将 while 循环包装在 try{..}catch(Throwable t)//捕获所有异常和错误中,看看会发生什么。

于 2013-07-30T11:17:49.577 回答