如何使用Angularjs、Java、Tomcat、Spring和REST下载10GB文件?

如何使用Angularjs、Java、Tomcat、Spring和REST下载10GB文件?,java,angularjs,spring,rest,tomcat,Java,Angularjs,Spring,Rest,Tomcat,当我下载小文件时,一切正常,但我需要一些方法来下载大文件。如果文件较大,则未创建Blob,内存不足。 下载文件而不在客户端保存,直接保存到磁盘上,服务器上有许多请求或类似的东西 我在服务器上的代码是: @RequestMapping(value = "/oneFile/{name}", method = RequestMethod.GET) public void getOneFile( @PathVariable("name") String name, HttpServletResp

当我下载小文件时,一切正常,但我需要一些方法来下载大文件。如果文件较大,则未创建Blob,内存不足。 下载文件而不在客户端保存,直接保存到磁盘上,服务器上有许多请求或类似的东西

我在服务器上的代码是:

@RequestMapping(value = "/oneFile/{name}", method = RequestMethod.GET)
    public void getOneFile( @PathVariable("name") String name, HttpServletResponse response,HttpServletRequest request) {
                ....
                InputStream in = new FileInputStream(new File(file.getAbsolutePath()));
                org.apache.commons.io.IOUtils.copy(in, response.getOutputStream());
                response.flushBuffer();
在客户机上,这是针对小尺寸的工作:

backupFileServer.downloadOneFileBrow(data)
                        .success(function(databack) {

                            var file = new Blob([ databack ], {
                                type : 'application/csv'
                            });
                            var fileURL = URL.createObjectURL(file);
                            var a = document.createElement('a');
                            a.href = fileURL;
                            a.target = '_blank';
                            a.download = data;
                            document.body.appendChild(a);
                            a.click();
                        })
                        .error(function() {
                            alert($scope.DOWNLOAD_ERROR);
                        });
我尝试过类似的方法,但没有成功:

var a = document.createElement('a');
                               a.href = 'data:attachment/csv;charset=utf-8,' + encodeURI(databack);
                               a.target = '_blank';
                               a.download = data;
                               document.body.appendChild(a);
                               a.click();
某人是如何想到如何做到这一点的,或是一些示例或代码……

提前感谢

您需要将文件拆分为多个文件,并使用服务器重建文件。 因为上传一个大文件而不拆分它是一种不好的做法,用户可以在99%的上传时断开连接,他需要再次上传整个文件

这里举一个例子:


这里有一个很好的例子:使用Amazon S3及其SDK。

您需要将文件拆分为多个文件,并使用服务器重建文件。 因为上传一个大文件而不拆分它是一种不好的做法,用户可以在99%的上传时断开连接,他需要再次上传整个文件

这里举一个例子:


这里有一个很好的例子:AmazonS3和他们的SDK。

这不是解决问题的正确方法。你应该从其他方面考虑,例如FTP、BitTorrent……如果可能的话,我希望没有FTP、BitTorrent或类似的东西。。。如果可能的话。。。如果没有,我必须这样做。你有一个10GB的csv文件吗?这仍然是一种方式,类型是没有问题的。如果我下载500MB的zip文件,一切正常,但如果我下载2GB或更大的zip文件,我会遇到问题。我的应用程序正在使用spring引导服务,我正试图从那里将400 MB的zip文件发送到客户端。。但“保存文件”框在大约15分钟后出现太晚。。我不太清楚。。我的用户界面有棱角。。为了确定我做错了什么,这不是解决问题的正确方法。你应该从其他方面考虑,例如FTP、BitTorrent……如果可能的话,我希望没有FTP、BitTorrent或类似的东西。。。如果可能的话。。。如果没有,我必须这样做。你有一个10GB的csv文件吗?这仍然是一种方式,类型是没有问题的。如果我下载500MB的zip文件,一切正常,但如果我下载2GB或更大的zip文件,我会遇到问题。我的应用程序正在使用spring引导服务,我正试图从那里将400 MB的zip文件发送到客户端。。但“保存文件”框在大约15分钟后出现太晚。。我不太清楚。。我的用户界面有棱角。。为了确定我做错了什么,这会很有帮助,但如果我明白这是为了上传文件,我需要一些东西来下载文件?是的,下载也是一样,如果你有一个大文件,你需要把它分成小块,浏览器会在最后重新编译所有文件。就像我想的那样。这里的更多信息:这会很有帮助,但是如果我明白这是为了上传文件,我需要一些东西来下载文件?是的,下载也是一样的,如果你有一个大文件,你需要将它分成小块,浏览器将在最后重新编译所有文件。就像我想的那样。更多信息请点击此处: