NodeJS发回动态文件和Json数据

时间:2014-02-27 19:39:35

标签: node.js

有没有办法可以将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数据,并调整标题以传回文件,但我没有运气。

1 个答案:

答案 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中尝试了你的代码,它确实启动了文件下载。但是,听起来您的要求不仅仅是启动下载。