Trying to send simple text string as a file, that being downloaded under certain name upon request. Can't seems to figure out why this code fails.
var text_ready = "This is a content of a txt file."
res.setHeader('Content-type', "application/octet-stream");
res.setHeader('Content-disposition', 'attachment; filename=file.txt');
res.send( new Buffer(text_ready) );
When this code executes, I receive only a XHR response (with that string as a content), but no download is being initiated. But I expected that receiveing this response will force browser to download a file with file.txt
as a name having content of the string above.
How to fix that? What am I doing wrong?
Maybe it will be important: working under Chrome 41 on Windows.
EDIT: it seems that I have to describe a bit deeper. The workflow is the following:
ng-click
events attached to each of themDetailed Steps to save text messages - Android Open Gmail and enable IMAP. Install and launch SMS Backup+. Choose "connect" and allow access to your contacts. Accept the "send and view permissions for SMS" prompt.
Open a new message and click on the attachment button. Choose your desired file format in the new window. Next, pick the picture or file (depending on your operating system) you want to send. Insert your recipient and text and there you go!
Tested on my node.js version 0.12.2, Windows 7, Chrome and Firefox
var http = require('http');
http.createServer(function (req, res) {
var text_ready = "This is a content of a txt file."
res.writeHead(200, {'Content-Type': 'application/force-download','Content-disposition':'attachment; filename=file.txt'});
res.end( text_ready );
}).listen(8080, '127.0.0.1');
console.log('Server running at http://127.0.0.1:8080/');
I think that you're not running the latest version of node.js. Maybe you can change only Content-type header, which might work. Also, you can use res.end( new Buffer(text_ready) );
. I've tested it.
EDITED: How to download file from node.js with javascript(jQuery onclick) call:
Javascript:
<script type="text/javascript">
$(document).ready(function(){
$("#button").on('click',function(){
window.location = 'http://127.0.0.1:1337/';
});
});
</script>
HTML:
<button id="button">Download</button>
I'm sure you know how to rewrite from jQuery to angularJS. :) I think that this is better than using an Ajax call. If you really need Ajax, I'll find out how to do it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With