Node.js 在nodejs中的已安装驱动器上保存和访问文件

Node.js 在nodejs中的已安装驱动器上保存和访问文件,node.js,linux,express,Node.js,Linux,Express,我有3台服务器作为一个集群运行,由flynn(有点像heroku)管理,我可以将一个共享驱动器连接到该集群,这样理论上它们都可以访问相同的文件 不过,我有点不确定是否可以从我的nodejs应用程序访问已安装的驱动器来保存和访问文件 有谁能告诉我这是否可能,以及我将如何大致做到这一点。对于node.js,您的文件系统路径实际上与服务器支持的URL无关。默认情况下,node.js服务器不提供任何文件(与其他一些服务器不同) 如果您想要http://example.com/uploads/test.j

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

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


有谁能告诉我这是否可能,以及我将如何大致做到这一点。

对于node.js,您的文件系统路径实际上与服务器支持的URL无关。默认情况下,node.js服务器不提供任何文件(与其他一些服务器不同)

如果您想要
http://example.com/uploads/test.jpg
要从
/mnt/shared/uploads
读取文件,然后,您必须创建一个包含传入路径的web服务器路由处理程序
http://example.com/uploads/test.jpg
,然后从
/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,然后place
express.static()
将查找匹配的文件:

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

您在哪个平台上运行?通常,如果驱动器已安装并可从命令行供操作系统使用,则node.js中的文件系统模块肯定可以使用该驱动器。安装的驱动器可能与本地驱动器具有一些不同的功能(如锁定),但如果数据是安装在卷上的,并且可以从命令行访问,则可以从node.js访问数据。服务器是Ubuntu Linux,驱动器是NFS安装,我可以从命令行访问它。因此,使用node.js中fs模块的文件NFS路径时是否遇到问题?它应该会起作用。这听起来像是在问一个理论问题,而没有在自己的环境中尝试。这里的问题应该报告您尝试了什么,以及您遇到了什么问题。我无法解决的是将文件提供给客户,这让我感到困惑。因此,他们请求example.com/uploads/test.jpg,但文件保存在/mnt/shared/uploads中。这就是当前为我的文件提供服务的内容,我尝试在前面添加挂载路径,但没有成功,这就是为什么我质疑是否可能的原因<代码>获取:函数(req,res){res.sendfile(req.path.substr(1));}