当前位置: 首页 > 知识库问答 >
问题:

Java 中的 Rest API 以下载大小为 > 3 GB 的文件(.tar.gz) [重复]

鲁杜吟
2023-03-14

我正在尝试下载大小的文件

try (InputStream fileInputStream = new FileInputStream(file)){
output = response.getOutputStream();
response.setContentType("application/gzip");
response.setContentLength((int) (file.length()));
response.setHeader("Content-Disposition", "attachment; filename=\"" + file.getName() + "\"");
IOUtils.copyLarge(fileInputStream, output);
output.flush();
if(fileInputStream != null) {
    fileInputStream.close();
   }
}

但得到下面的错误。

2019-06-12 14:38:24,840 ERROR [https-jsse-nio-8543-exec-1]-rest.LogBundlesAPI: downloadLogBundle--> Exception occured while reading log bundle in download log bundle REST call.org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer

为什么高于误差

共有2个答案

杭镜
2023-03-14

通过动态创建ftp URL,您可以使用ftp协议下载大型文件。谢谢

霍修筠
2023-03-14

使用分块传输编码。大多数REST库都支持它(比如JAX-RS)。我认为你应该考虑使用它。

 类似资料:
  • 问题内容: 我正在从远程位置下载文件,对于较小的文件,下载已完成;对于较大的文件(> 10 MB),下载未完成。这是我用于从远程服务器下载文件的代码。 问题答案: 您可以使用apache commons IO库。这很容易。我已经在许多项目中使用过它。

  • 我正在尝试通过OKHTTP3下载zip文件(大小为160 Mb)。几秒钟后,应用程序与堆栈崩溃: IllegalStateException:在scheduler.worker线程上引发的致命异常。在java.util.concurrent.executors$runnableadapter.call(executors.java:59)在java.util.concurrent.futureta

  • 问题内容: 我正在从Web服务器下载整个目录。它可以正常工作,但是我无法弄清楚如何在下载之前获取文件大小以进行比较(如果服务器上是否已更新)。可以像从FTP服务器下载文件一样完成此操作吗? @Jon:感谢您的快速回答。它可以工作,但是Web服务器上的文件大小略小于下载文件的文件大小。 例子: 与CR / LF转换有关系吗? 问题答案: 我转载了您所看到的: 输出此: 我在这里做错了什么?os.st

  • 问题内容: 有没有一种方法可以获取远程文件http://my_url/my_file.txt的大小而无需下载文件? 问题答案: 在这里找到有关此的一些信息: 这是(我发现)获取远程文件大小的最佳方法。请注意,HEAD请求不会获取请求的实际主体,它们只是检索标头。因此,对100MB的资源进行HEAD请求所花费的时间与对1KB的资源进行HEAD请求所花费的时间相同。 用法:

  • 我有一个文件表示为块的列表,目标是下载所有块,加入并保存为一个文件。 它应该适用于大文件 应该是跨浏览器解决方案 null null null null 但我仍然无法实现我的目标与涵盖的需求… 如果有人有经验,最好的解决方案,我恳请分享它在这里。谢谢

  • 问题内容: 基本上,我想确定是否应该使用AJAX下载文件,具体取决于文件大小。 我猜这个问题也可以表述为:我如何仅获取ajax请求的标头? 编辑 :评论中的ultima-rat0告诉了我两个已经被问到的显然与这个相同的问题。它们非常相似,但是都需要jQuery。我想要一个非jQuery解决方案。 问题答案: 您可以手动获取XHR响应头数据: http://www.w3.org/TR/XMLHttp