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

标签 java angularjs spring rest tomcat

当我下载小文件时,一切正常,但我需要一些方法来下载大文件。如果文件很大,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% 时断开连接,他需要重新上传整个文件。

这里有一个例子:https://flowjs.github.io/ng-flow/

这里有一个很好的例子:http://ryansouthgate.com/2015/12/24/upload-amazon-s3-using-angularjs/使用 Amazon S3 及其 SDK。

关于java - 如何使用 Angularjs、Java、Tomcat、Spring 和 REST 下载 10GB 的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34851334/

相关文章:

java - 我应该用什么来爬取许多新闻文章?

java - 从现有的 OutputStream 创建 Java-Zip-Archive

java - 整数初始化和方法错误

javascript - AngularJS 无法访问 Controller 内的指令范围

java - 一对一关系中空列的 HQL 左外连接

angularjs - 如何使用ui-mask从 Angular 输入中获取模型中的掩盖日期?

javascript - 如果找不到图像,则替换为默认图像-angularjs

java - 将 sql 脚本提升到 dev、cert、staging 和 prod

java - Hibernate、Spring 和外键

java - 使用 spring 注释读取属性文件中选定的内容