Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamically creating a file with node.js and make it available for download

I am building a text editor in Node.js where a user create a file in a textarea. When he is done editing the file, he can push an "export" button that triggers a Jquery function that reads the textarea and post the text on the node.js server. The server should read the information and return a file. I would like to avoid creating a file on the server and servicing it, I'd rather create a file on the fly with streams. I have tried using the following and but that didn't work:

exports.exportfile = function(req,res){

  var Stream = require('stream')
  var stream = new Stream();

  res.setHeader('Content-disposition', 'attachment; filename=try.txt');
  res.setHeader('Content-type', 'text/plain');

  stream.pipe = function(dest) {
    dest.write('Hello Dolly')
  }

    stream.pipe(res)
}

Does anybody have any insight on how to achieve this?

like image 202
Cyril Gaillard Avatar asked Aug 27 '13 14:08

Cyril Gaillard


1 Answers

I tested this on my server and it worked. It was from a GET call but I don't see why it wouldn't work with a POST.

res.setHeader('Content-disposition', 'attachment; filename=theDocument.txt');
res.setHeader('Content-type', 'text/plain');
res.charset = 'UTF-8';
res.write("Hello, world");
res.end();
like image 63
MasterMachines Avatar answered Sep 26 '22 10:09

MasterMachines