从http响应正文下载文件

Fin*_*kel 10 javascript angularjs

我现在已经研究了很长一段时间了,找不到明确的答案/解决问题的方法.

情况是这样的:我正在向服务器发送一个帖子请求.响应包含其正文中的pcap文件的二进制文件.如何将其作为文件下载.

我的简化代码:

...
this.downloadPcap = function(timestamp){
  var start = timestamp-10;
  var end = timestamp+10;
  var requestData = {"start": start, "end": end};
  $http.post(serverUrl, requestData);
}
Run Code Online (Sandbox Code Playgroud)

这是通过单击触发的,其中我获取某个事件的时间戳,并且服务器在确切事件之前和之后的10秒内创建PCAP文件.

我收到一个带有长二进制的响应.也:

内容长度:134772

内容类型:application/pcap

现在我被告知如果标题是这样的,浏览器将自动开始将响应作为文件下载.它没有.

所以我对Blob和FileSaver的了解很少,但我觉得必须有一种更简单的方法来下载动态创建的文件.

有人可以指点我某个方向吗?有没有比包含更多库更简单的方法?

提前致谢

Fin*_*kel 4

海狸向我指出了这里的答案: https: //stackoverflow.com/a/20904398/5459561

完美运作!我个人下载的是 PCAP,编码不同,但其余的都可以!

$http 服务返回一个 Promise,它有两个回调方法,如下所示。

$http({method: 'GET', url: '/someUrl'}).
  success(function(data, status, headers, config) {
     var anchor = angular.element('<a/>');
     anchor.attr({
         href: 'data:attachment/csv;charset=utf-8,' + encodeURI(data),
         target: '_blank',
         download: 'filename.csv'
     })[0].click();

  }).
  error(function(data, status, headers, config) {
    // if there's an error you should see it here
  });
Run Code Online (Sandbox Code Playgroud)