node.js - 我应该如何在 NodeJS 中存储文件
问题描述
- 我是 Nodejs 的新手,正在研究如何在 NodeJS 中使用 Multer 上传文件。而且我看到大部分教程都将各种文件(音频、头像照片、横幅照片、文本、PDF 等)存储在一个静态的“公共”文件夹中。
- 我的第一个问题:这是在后端存储文件的最佳方式吗?我应该为特定用户创建一个子文件夹来存储该用户的所有文件(例如:User1Folder、User2Folder)还是为某种类型的文件(例如:PDFFolder、AvatarFolder、..)。
- 我的第二个问题:我应该创建一个像这样的文件模型: File{ id: "", name: "", UploadedDate: "", ... } 然后将其保存在数据库中。
解决方案
- 静态公用文件夹应该是您唯一公开的文件夹,因此从某种意义上说,您做对了。
- 不,我会使用 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"
}
推荐阅读
- stripe-payments - 在 PHP 中使用 Stripe API 创建客户时,为什么我的数组不返回任何数据?
- html - “indexvalue”是什么意思,它的用途是什么?
- sql - AWS Athena - 如何更改日期字符串的格式
- variables - 是否有允许我使用指标变量创建多元线性回归模型的 SAS PROC 语句?
- amazon-web-services - 使用 ECS Fargate 执行 Step Function“任务”
- android - 如何使用 Android 的 API 密钥使用谷歌云平台
- google-sheets - 无法在 Google Sheets QUERY 函数中使用简单的正则表达式
- react-native - React-Navigation 在同一屏幕中显示底部菜单和抽屉菜单
- javascript - Chrome 扩展程序的内容脚本中的 XSS“阻止了来自访问跨域框架的框架”错误
- linux - rcu_read_lock 和 x86-64 内存排序