在NodeJS中下载文件

我正在编写HTML所见即所得的应用程序。 用户编辑网页后,应能够点击下载button,并通过浏览器提示保存编辑好的网页。 我不想将他们编辑的网页存储在我的服务器上,而是将文件发送到他们的本地机器上。

到目前为止,在我的应用程序中,我可以编辑模板,当用户单击下载button时获取HTML,并使用NodeJSfs.createWriteStream方法,将HTML写入新创build的HTML文件。 但是,它会在我的服务器上创build文件,而不是提示浏览器将文件保存在“下载”文件夹中。 我使用Socket.io来告诉服务器下载HTML内容。

经过研究,我发现为了使浏览器提示用户保存下载文件,必须使用Content-Disposition:附件头来设置HTTP头。

总之,当用户在我的应用程序中单击下载button时,我该怎么做才能创build一个新文件,并直接保存在用户本地计算机而不是我的服务器上?

这是我在我的server.js文件中:

io.sockets.on('connection', function(socket) { socket.on('downloadHTML', function(data) { var file = fs.createWriteStream('PearlEdit-template-Martketing.html', {flags: 'w'}) .write(data.html); }); }); 

你可以简单地使用这样的东西(从这里引用的答案)

 app.get('/download', function(req, res){ var file = __dirname + '/upload-folder/dramaticpenguin.MOV'; var filename = path.basename(file); var mimetype = mime.lookup(file); res.setHeader('Content-disposition', 'attachment; filename=' + filename); res.setHeader('Content-type', mimetype); var filestream = fs.createReadStream(file); filestream.pipe(res); });