[英]How to download 10GB file with Angularjs, Java, Tomcat,Spring and REST?
当我下载小文件时,一切都很好,但是我需要某种方式来下载大文件。 如果文件很大,则表示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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.