从http响应主体下载一个文件
Download a file from http response body
我已经研究了很长一段时间,找不到一个明确的答案/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
});
相关文章:
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- Sails.js:同时发布文本输入和一个文件
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 要求定义另一个文件中的对象
- 是否可以使用JavaScript/AAJAX在客户端创建一个文件
- 如何将所有JS文件连接到一个文件夹中
- 请求准备一个文件并返回路径,允许用户在准备好时下载
- 从AngularJS中的另一个文件中的控制器访问服务
- 将任何CDN配置为只传递一个文件,无论请求的url是什么
- 通过AngularJS promise下载一个文件
- Grunt-将多个文件最小化/处理为一个文件
- 文件的节点自动化移动到另一个文件夹中
- 用于文件移动到另一个文件夹的Javascript自动化
- 需要从一个文件中获取多个模块
- 仅首先需要使用jasmine从节点添加一个文件
- jQuery Mobile样式从另一个文件加载内容
- 最小化CSS/JS文件,并使用命令行创建一个文件
- 我如何制作一个文件的副本并用gump将其移动到父文件夹
- 为什么当我上传文件并点击更多上传另一个文件的第一个删除