【问题标题】:Download large file >1GB using http protocol, java and javascript使用 http 协议、java 和 javascript 下载大于 1GB 的大文件
【发布时间】:2016-01-04 07:43:37
【问题描述】:

我有一个用于下载文件的网络应用程序。一切正常,除非我想下载超过 1GB 的文件。

这是我的java代码:

InputStream in = new FileInputStream(new File(folderFile.getAbsolutePath()));
                org.apache.commons.io.IOUtils.copy(in, response.getOutputStream());
                response.flushBuffer();
                in.close();

HTTP 请求:

$http({
            method:'get',
            url:this.apiDownloadFileUrl,
            responseType:'arraybuffer',
            cache: false
    });

这是客户端:我在客户端成功获取了数据,但是当我制作 Blob 时,如果数据大小超过 500MB ,则没有任何反应并且没有下载。另外,我可以下载300MB ...

如何检查是内存问题还是服务器问题? ...当我从 gmail 下载时,我可以下载超过 1GB。

            .success(function(databack) {       
                            var file = new Blob([ databack ], {
                                type : 'application/csv'
                            });

                            var fileURL = window.URL.createObjectURL(file);
                            var a = document.createElement('a');
                            a.href = fileURL;
                            a.target = '_blank';
                            a.download = data;
                            document.body.appendChild(a);
                            a.click(); 

【问题讨论】:

标签: javascript java angularjs http tomcat


【解决方案1】:

您是否尝试过使用 IOUtils 中的 copyLarge() 方法?对于 copy() 方法,JavaDoc 说:

“对于大流,请使用 copyLarge(InputStream, OutputStream) 方法。”

【讨论】:

    【解决方案2】:

    您应该先检查响应消息,然后决定是哪一方引发了问题。 根据我的经验,你应该检查文件是否被浏览器缓存而不是任何问题~

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多