【问题标题】:Download file from Json object in Node.js从 Node.js 中的 Json 对象下载文件
【发布时间】:2014-08-21 19:32:13
【问题描述】:

我是 NodeJS 的新手。我正在尝试从 json 对象下载文件。我有从 Mongodb 集合收到的 json 对象,我想将 json 数据作为文件列表返回。我试图从我的本地机器下载文件并且代码有效。但无法理解我应该如何从 json 对象返回文件。我需要为此使用缓冲区吗?到目前为止,我有以下测试代码。

    //Write Member File
exports.File  = function(req, res){
    var data =  getdata(function(err, members){
        //console.log(members);

//        var bf = buffer.Buffer(members, 'Binary').toString('base64');
//        console.log(bf.length);
        // I get bf.length as 4
        var file = 'C:/Docs/members.txt';
        var filename = path.basename(file);
        console.log(filename);
        var mimetype = 'text/plain';
        res.setHeader('Content-disposition', 'attachment; filename=' + filename);
        res.setHeader('Content-type', mimetype);
        var fileStream =  fs.createReadStream(file);
        fileStream.pipe(res);
    });
};

【问题讨论】:

    标签: javascript json node.js


    【解决方案1】:

    这对我有用。

    var user = {"name":"azraq","country":"egypt"};
    var json = JSON.stringify(user);
    var filename = 'user.json';
    var mimetype = 'application/json';
    res.setHeader('Content-Type', mimetype);
    res.setHeader('Content-disposition','attachment; filename='+filename);
    res.send( json );
    

    【讨论】:

      【解决方案2】:

      你可以试试这个。

      function(req, res) {
          var jsonObj = getJSON();
          var data = JSON.stringify(jsonObj);
          res.setHeader('Content-disposition', 'attachment; filename= myFile.json');
          res.setHeader('Content-type', 'application/json');
          res.write(data, function (err) {
              res.end();
          }
      });
      

      【讨论】:

        【解决方案3】:

        我需要为此使用缓冲区吗?

        不,您.write() 回复的简单字符串就足够了。

        exports.returnData = function(req, res){
            getdata(function(err, members){
                console.log(members); // I guess you have an object here, not a plain response
                var json = JSON.stringify(members); // so let's encode it
        
                var filename = 'result.json'; // or whatever
                var mimetype = 'application/json';
        
                res.setHeader('Content-disposition', 'attachment; filename=' + filename);
                res.setHeader('Content-type', mimetype);
                res.write(json);
            });
        };
        

        【讨论】:

        • 我尝试了您的解决方案,但它返回空文件并且下载文件需要很长时间。我可以在 console.log(members) 中看到数据。但它没有出现在文件中。
        • console.log(json) 放了什么?
        • console.log(members) 放json数组数据。
        猜你喜欢
        • 2013-11-12
        • 2021-01-30
        • 1970-01-01
        • 2012-06-15
        • 2016-05-26
        • 1970-01-01
        • 2016-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多