在nodejs中保存和访问已装入驱动器上的文件

时间:2016-07-12 07:29:58

标签: node.js linux express

我有3个服务器作为由flynn管理的集群运行(有点像heroku),我可以附加共享驱动器,这样理论上它们都可以访问相同的文件。

但是我有点不确定是否可以从我的nodejs应用程序访问已安装的驱动器来保存和访问文件。

任何人都可以了解一下这是否可行以及我将如何做到这一点。

1 个答案:

答案 0 :(得分:0)

使用node.js,您的文件系统路径与服务器支持的URL完全无关。 node.js服务器默认不提供任何文件(与其他服务器不同)。

如果您希望http://example.com/uploads/test.jpg的传入浏览器请求从/mnt/shared/uploads读取文件,则必须创建包含传入路径http://example.com/uploads/test.jpg的Web服务器路由处理程序,然后读取来自/mnt/shared/uploads的数据,并将该数据作为http响应写出来。

根据您使用的Web服务器环境,有帮助程序可以执行该映射。例如,express有express.static()有助于一些自动映射。但是,Web服务器本身并不会自动为这样的文件服务。

因此,如果你想要的是http://example.com/uploads/*的所有传入请求都会从/mnt/shared/uploads/*读取,那么你可以使用express.static()来帮助你这样做:

app.use("/uploads", express.static("/mnt/shared/uploads"));

这将采用它在/uploads之后找到的任何路径,并在/mnt/shared/uploads中查找该路径。如果找到,它将自动将内容作为静态内容提供。

所以,它会像这样工作,首先显示传入的URL,而地点express.static()将查找匹配的文件:

/uploads/test.jpg       ==> /mnt/shared/uploads/test.jpg
/uploads/bob/test.txt   ==> /mnt/shared/uploads/bob/test.txt