Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将json块作为文件发送给用户_Javascript_Json_Node.js_File_Express - Fatal编程技术网

Javascript 如何将json块作为文件发送给用户

Javascript 如何将json块作为文件发送给用户,javascript,json,node.js,file,express,Javascript,Json,Node.js,File,Express,我有一个大的JSON块;将其作为(下载的)文件发送到浏览器的最佳方式是什么 下面是一个示例,如果我的源代码来自一个文件,但在我的情况下,我的源代码不是一个文件,而是一个变量,我需要将此json数据发送到浏览器: var http = require('http'); var fs = require('fs'); var file = fs.createWriteStream("file.jpg"); var request = http.get("http://i3.ytimg.com/vi

我有一个大的JSON块;将其作为(下载的)文件发送到浏览器的最佳方式是什么

下面是一个示例,如果我的源代码来自一个文件,但在我的情况下,我的源代码不是一个文件,而是一个变量,我需要将此json数据发送到浏览器:

var http = require('http');
var fs = require('fs');

var file = fs.createWriteStream("file.jpg");
var request = http.get("http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg", function(response) {
  response.pipe(file);
});
我的尝试代码:

res.setHeader('Content-disposition', 'attachment; filename=myData.json');
res.setHeader('Content-type', 'application/json');
//data is my variable with my JSON block
res.pipe(data);//This is not right!

如果我的问题含糊不清,请让我知道您是否需要更多的澄清

听起来您可能想要的是JSON流。例如:您希望将一个非常大的JSON对象分块发送到客户机(不是一次全部发送,而是浪费大量内存)


这里有一个非常好的库可以为您处理这个问题:

我不知道您使用的是哪种类型的框架(Express?),但它只适用于普通http模块

var http = require('http');

http.createServer(function (req, res) {
  res.setHeader('Content-disposition', 'attachment;   filename=myfilename');

  var data = { foo: 'bar' };      

  res.write(JSON.stringify(data))
  res.end()

}).listen(1337, '127.0.0.1');

这段代码的实际结果是什么?@DanielKaplan我尝试的代码:错误:Object#没有方法onTry
res.write(data,“binary”)
res.write(新缓冲区(data.toString(“binary”),“binary”)@bhantol他们都不工作;第一个参数说第一个参数需要缓冲,第二个参数的加载永远不会结束!顺便说一句,我在尝试的标题中使用了它们。尝试
仅res.end(新缓冲区(数据,“二进制”)
,但这只是在浏览器中显示结果;我希望它作为一个文件下载到浏览器,这与您的浏览器的设置有关,您可以将其设置为打开该文件(在本例中,它将是一个.txt文件)。为什么我的答案被否决了?不,我对流媒体不感兴趣;我只想让我的数据变量(一个JSON块)在浏览器中作为下载文件。如果是这样,那么您只需要为用户输出一个单独的内容类型头。这是决定代码是否显示为文件或其他形式的唯一因素。您能详细说明一下吗?我不明白!谢谢