javascript - Multer 唯一文件名
问题描述
我对 Multer Filename 有疑问。
那么当一个multer用一个随机的fileName存储文件时,是否会出现两个文件在multer中具有相同名称的情况?
基本上我想说的是,如果我要存储大量用户的文件,文件名可以重复吗?我可以信任 multer 还是必须编写一个单独的函数来为每个文件提供唯一的文件名?
解决方案
从这里的 npm 页面,我们可以看到 Multer 在磁盘上存储文件的示例代码:
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/tmp/my-uploads')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
})
var upload = multer({ storage: storage })
文件名与'-' + Date.now()
. Date.now()
给你从 1970 年 1 月 1 日开始的毫秒数。因此,如果 2 个文件在不同时间保存,则它们具有不同的名称。理论上,如果两个文件在同一时间(毫秒单位)保存在系统上,它们将具有相同的名称。
因此,它不取决于您存储了多少文件,而是取决于请求到达系统的速度。如果你每秒有超过 1000 个请求,就会有重复的机会。在这种情况下,您应该使用 UUID 之类的东西。否则,Date.now()
做这项工作。
推荐阅读
- python - 如何在 AWS Lambda 函数中获取 eventName?
- python - 在python中使用常规for循环创建矩阵
- laravel - Laravel 按性别和数量区分用户
- javascript - Chrome DevConsole - 不再能够将元素复制为文本
- flask - Flask-SQLAlchemy:仅当要比较的值不为空时才应用过滤器
- python - 如何使用 Python 从包含“显示更多”的网页中提取所有 url?
- java - PySpark:当通过 JDBC 在 Oracle 中创建表时,为什么我会得到“没有为类 oracle.jdbc.driver.T4CRowidAccessor 实现 getLong”?
- dji-sdk - GPSDetail 字段的含义
- javascript - 数组映射并跳过未定义的动态对象属性
- elasticsearch - 基于 ES REST API 查询创建 Kibana 可视化