1

Java コードを使用してサーバーからファイルをダウンロードしましたが、ファイルがダウンロードされた後、ファイルはサーバーから削除されます。ファイルの合計サイズは 200 GB です。ダウンロードが開始され、ダウンロードが成功したことが示されます。ダウンロードしたファイルのサイズを確認すると、わずか 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 に答える