我有3个服务器作为由flynn管理的集群运行(有点像heroku),我可以附加共享驱动器,这样理论上它们都可以访问相同的文件。
但是我有点不确定是否可以从我的nodejs应用程序访问已安装的驱动器来保存和访问文件。
任何人都可以了解一下这是否可行以及我将如何做到这一点。
答案 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