我正在开发一个 Node.js/Express 应用程序,需要处理用户上传的文件。我知道公用文件夹通常用于用户可以直接访问的静态资产。但是,我想确保用户上传的文件被安全存储并且不会受到未经授权的访问。
虽然我知道云存储解决方案是一种选择,但我专注于直接在服务器上处理文件上传。
用户上传的文件是否应该存储在与公共目录不同的文件夹中? 例如,公共文件是否应该位于公共文件夹中,而用户上传的内容是否应该保存在不同的安全文件夹中?
Express 中的公共文件夹让应用程序提供静态文件。并且其中的所有内容都将可供用户直接访问。
但是 Express 中默认没有 Public 文件夹。
公共文件夹是使用中间件软件配置的。 express.static - Express 中的内置中间件软件,是此类中间件软件之一。 该中间件使给定文件夹能够公开进行读取访问。
用户仍然无法“写入”这些公用文件夹。用户既不能在这些公用文件夹中创建内容,也不能从这些公用文件夹中删除内容。这意味着,除非单独启用写入功能,否则不可能直接上传到公共文件夹或直接从公共文件夹中删除。 Multer是一个可以实现文件上传的中间件。作为一个独立的中间件,它提供了自己的一组配置选项,其中存储目的地是主要选项之一。目标可以是同一台服务器,也可以是另一台服务器。 不过要注意的是,这是提供写入功能的中间件。 现在由应用程序来配置文件夹。如果这两个中间件软件中配置了相同的文件夹, 那么同一文件夹将成为公共的读写访问权限。在这种情况下,上传将不受保护。 否则,如果将读取和写入配置到单独的文件夹中,则将存在单独的公共文件夹和受保护文件夹。 用户将无法直接访问受保护的文件夹。
引用:在 Express 中提供静态文件穆尔特