Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
下载Angular 7中的文件(大文件流)_Angular_Angular7 - Fatal编程技术网

下载Angular 7中的文件(大文件流)

下载Angular 7中的文件(大文件流),angular,angular7,Angular,Angular7,我们正在开发一个应用程序,用户可以下载很多大文件 当我们开始切换到Angular 7时,我们开始使用这种方法(经过修改以处理不同的浏览器): 上述方法对于小文件非常有效。但当涉及到更大的文件(在我们的例子中是1-5GB)时,据我所知,在这种情况下,文件将加载到Blob对象中,一旦下载完成,它将把文件扔到浏览器中,浏览器将在用户机器的下载文件夹中写入。我们希望立即开始写入用户的下载目录,而不存储到Blob对象 到目前为止,对于大文件,我们使用了以下方法: downloadFile(fileId

我们正在开发一个应用程序,用户可以下载很多大文件

当我们开始切换到Angular 7时,我们开始使用这种方法(经过修改以处理不同的浏览器):

上述方法对于小文件非常有效。但当涉及到更大的文件(在我们的例子中是1-5GB)时,据我所知,在这种情况下,文件将加载到Blob对象中,一旦下载完成,它将把文件扔到浏览器中,浏览器将在用户机器的下载文件夹中写入。我们希望立即开始写入用户的下载目录,而不存储到Blob对象

到目前为止,对于大文件,我们使用了以下方法:

  downloadFile(fileId: string) {
    window.location.href = `downloadFile?fileId=${fileId}`;
  }
我们在没有订阅的情况下启动上述方法。服务器端将写入响应编写器,所以一旦响应出现,它将立即开始在下载目录中写入文件

大多数情况下,我们对SQL查询进行流式处理,因此有时从查询本身返回结果需要一些时间。当使用上面描述的第二种方法时,下载或堆栈都不起作用。我不能添加任何微调器,因为我们没有订阅

我的问题是在angular 7中下载/传输大文件的最佳方式是什么

我们擅长第二种方法。在这种方法中,有什么解决方法可以避免将数据存储到Blob对象并直接写入下载文件夹


我可以在评论中提供更多细节。谢谢大家!

为什么不只是:
窗口打开('pathtofile.txt')
?你不能两全其美你要么需要下载blob,这样你就可以看到明显的开销发生了什么。这看起来与OP已经在做的事情相同@AliWahab?@Liam我提到了一个包,他没有使用它,这可能也会有帮助。@Liam,第二种方法与您的建议非常相似。当文件已经在服务器端时,它可以很好地工作,但大多数时候,我们都会将SQL查询结果写入响应,并将其作为文件发送到前台。为什么不仅仅是:
window.open('pathtofile.txt')
?你不能两全其美你要么需要下载blob,这样你就可以看到明显的开销发生了什么。这看起来与OP已经在做的事情相同@AliWahab?@Liam我提到了一个包,他没有使用它,这可能也会有帮助。@Liam,第二种方法与您的建议非常相似。当文件已经在服务器端时,它工作得很好,但大多数时候,我们都会将SQL查询结果写入响应,并将其作为文件发送到前台
  downloadFile(fileId: string) {
    window.location.href = `downloadFile?fileId=${fileId}`;
  }