如何将 json 块作为文件发送给用户
How to send a json block to the user as a file
我有一个很大的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 流式传输。 EG:您想将一个非常大的 JSON 对象分段发送给客户端(不是一次全部发送,浪费大量内存)。
这里有一个非常好的库可以为您处理这个问题:https://github.com/dominictarr/JSONStream
我不知道您使用的是什么类型的框架(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');
我有一个很大的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 流式传输。 EG:您想将一个非常大的 JSON 对象分段发送给客户端(不是一次全部发送,浪费大量内存)。
这里有一个非常好的库可以为您处理这个问题:https://github.com/dominictarr/JSONStream
我不知道您使用的是什么类型的框架(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');