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

Download large file >1GB using http protocol, java and javascript

本文关键字:协议 http java javascript 使用 1GB 文件 gt 下载      更新时间:2023-09-26

我有一个用于下载文件的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(); 

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

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

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