我应该如何在 NodeJS 中存储文件

How should I store files in NodeJS

  • 静态 public 文件夹应该是您唯一公开的文件夹,因此在 感觉你做对了。
  • 不,我会使用 AWS S3 等外部服务来存储用户资产。您决定的文件夹模式完全取决于您计划为用户存储的资产。哪种方式可以让您轻松调试、保持理智以及迁移到其他服务器的能力。您可以在服务器之间拆分用户吗?我会画出您期望的文件类型树,并考虑哪种模式在您的应用程序中最灵活。我会倾向于类型,因为有些文件的处理方式与其他文件不同。您也不希望来自非活动用户的数百个几乎为空的文件夹。
  • 是的。还包括服务器上的文件路径,以便稍后重新使用。我还会考虑将文件的命名约定作为备份标识符。也许像 userid_date_avatar.jpg.

{ id: 12345, path: "s3://app_name/users/assets/images/5543_01_31_2019_10_05_33_avatar.jpg", uploaded: "01-31-2019_10:05:33" }

公司选择针对文件存储优化的第 3 方或独立存储服务是很常见的。有些带有免费试用计划,如 aws-s3、Google 的 gcs、azure 和其他一些。

但如果真的涉及到我们自己服务中的文件存储,将所有文件放在同一个文件夹(平面文件目录)中并通过将文件附加到相应模型中来进行文件分类就可以了. 在数据中放入类似这样的内容:{ "username": "arege", "name": "Arle Greg", "profile_picture_file":"timestamp_somehash.png"}

对于第二个问题,如果您的服务通常需要记录所有上传文件类型的日期,那么最好有这种模型。但如果只是针对服务中的一小部分文件类型,则可以随文件一起写在相应的模型中link.