从http响应主体下载一个文件

Download a file from http response body

本文关键字:一个 文件 http 响应 主体 下载      更新时间:2023-09-26

我已经研究了很长一段时间,找不到一个明确的答案/a来解决我的问题。

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

我的简化代码:

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

这是由点击触发的,我在点击中获得某个事件的时间戳,服务器在确切事件前后10秒创建一个PCAP文件。

我收到一个长二进制的响应。还有:

内容长度:134772

内容类型:应用程序/pcap

现在我被告知,如果标题是这样的,浏览器将自动开始将响应作为文件下载。事实并非如此。

所以我很少读到关于Blob和FileSaver的文章,但我觉得必须有一种更简单的方法来下载动态创建的文件。

有人能给我指个方向吗?没有比包括更多的库更简单的方法了吗?

提前感谢

beaver在这里给我指出了答案: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
  });