在string中创build一个文本文件在node.js中,并作为响应进行stream式处理

1)我正在使用express.js

2)我有一个string“Hello world!”

3)我想要一个用户点击

<a href=/download>Download</a> 

4)用户应该得到Hello.txt下载的文本,而不是打开一个标签的文字。

5)我已经四处寻找方法来实现这一点,我猜测它与创buildreadstreams从缓冲区和pipe道到响应有关,但我大多数的例子处理从磁盘读取实际的文件,我不想读取磁盘,我只是想用一个string创build的文件作出回应。

谢谢!

我想我明白你在做什么。 您想发送一个.txt文件到客户端,而不需要在光盘上创build一个文件。

这实际上是非常基本的,而且非常简单。 你所要做的就是在头文件中设置你的MIMEtypes,但是大多数浏览器默认不下载.txt文件。 他们只是打开并显示内容。

 var text={"hello.txt":"Hello World!","bye.txt":"Goodbye Cruel World!"}; app.get('/files/:name',function(req,res){ res.set({"Content-Disposition":"attachment; filename=\"req.params.name\""}); res.send(text[req.params.name]); }); 

作为未来的笔记,您可以发送任何存储为variables的数据。 例如,如果你有一个缓冲区加载了一个图像,你可以通过改变Content-Type方式发送,否则浏览器不知道你要发送什么数据,并且表示我相信将默认types设置为text/html 。 这是一个很好的参考互联网媒体types和MIMEtypes 。

这是为我工作!

 var text="hello world"; res.setHeader('Content-type', "application/octet-stream"); res.setHeader('Content-disposition', 'attachment; filename=file.txt'); res.send(text); 

感谢帮助的人,这就是我最终的结果:@aaron,是否有一种方式可以在所有浏览器中工作?

 res.setHeader('Content-disposition', 'attachment; filename=theDocument.txt'); res.setHeader('Content-type', 'text/plain'); res.charset = 'UTF-8'; res.write("Hello, world"); res.end();