这是一个ajax调用,提示用户将响应保存为文件:
$http.get("api.php",{responseType:'arraybuffer'}).then(function(response){
var blob = new Blob([response.data], {type: "application/pdf"});
saveAs(blob, filename);
});
(saveAs
来自FileSaver.js)
问题是只有在响应完全加载后才会显示提示对话框。如果响应很大,则用户必须等待一段时间才能看到提示对话框。他/她无法取消下载。
通常当浏览器从直接链接下载文件时,它会在下载开始前提示保存。
是否有可能对AJAX做同样的事情?
答案 0 :(得分:0)
最简单的方法是将整个事物包裹在if (confirm('Are you sure you want to save?'))
。
答案 1 :(得分:0)
使用带有下载选项的锚元素,并将查询参数链接到您的api,如<a href="api.php?some=params" download="yourfile.pdf">your file</a>