使用http协议,java和javascript下载大文件> 1GB

时间:2016-01-04 07:43:37

标签: javascript java angularjs http tomcat

我有一个用于下载文件的Web应用程序。一切正常,除非我想下载超过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(); 

2 个答案:

答案 0 :(得分:0)

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

  

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

答案 1 :(得分:0)

您应该首先检查响应消息,并确定哪一侧引发了该问题。 以我的经验,您应该检查文件是否被浏览器缓存,而不是任何问题〜