我有一个用于下载文件的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();
答案 0 :(得分:0)
您是否尝试过使用IOUtils中的copyLarge()方法?对于复制()方法,JavaDoc说:
“对于大型流,使用copyLarge(InputStream,OutputStream)方法。”
答案 1 :(得分:0)
您应该首先检查响应消息,并确定哪一侧引发了该问题。 以我的经验,您应该检查文件是否被浏览器缓存,而不是任何问题〜