有没有办法可以将json发送回我的ajax调用,并让客户端在发送响应时下载文件?
我尝试传递一个简单的代码集:
res.setHeader('Content-disposition', 'attachment; filename=theDocument.txt');
res.setHeader('Content-type', 'text/plain');
res.charset = 'UTF-8';
res.write("Hello, world");
但是没有为客户创建可下载的文件。
我还尝试发送回JSON数据,并调整标题以传回文件,但我没有运气。
答案 0 :(得分:1)
您在问题中提供的代码(如果有效)只会为最终用户开始下载。它不会向您的Web应用程序返回AJAX响应。
由于您的要求是a。)启动文件下载和b。)在您的应用程序中收到AJAX响应,我认为我使用的解决方案将满足您的需求。除非你想要发出多个HTTP请求,否则我无法想到任何其他方式可以做到这一点。
基本上,我们将数据作为普通的AJAX请求从服务器发回。然后,在浏览器中,我们启动文件下载。
以下是一个例子:
api.request("/ajax/data", function(err, data) {
# Once you get your data back from the API, we make the browser download it.
var toDownload = encodeURIComponent(data);
var a = document.createElement('a');
a.href = "data:text/php;charset=UTF-8," + toDownload;
a.target = '_blank';
a.download = 'my_downlaoded_filename.txt';
document.body.appendChild(a);
a.click()
});
请试一试,如果有效,请告诉我。我从CoffeeScript翻译过来,所以希望我没有添加任何拼写错误。 ;)
编辑:我在Node.js中尝试了你的代码,它确实启动了文件下载。但是,听起来您的要求不仅仅是启动下载。