首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从http响应体下载文件

从http响应体下载文件
EN

Stack Overflow用户
提问于 2015-12-31 12:34:11
回答 1查看 30.9K关注 0票数 11

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

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

我的简化代码:

代码语言:javascript
复制
...
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的内容,但是我觉得一定有一种更容易的方法来下载动态创建的文件。

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

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-04 08:42:52

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

效果很好!我个人正在下载一个PCAP,编码是不同的,但所有其他的工作!

$http服务返回一个承诺,其中包含两个回调方法,如下所示。

代码语言:javascript
复制
$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
  });
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34546605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档