Multer 唯一文件名
Multer Unique Filename
我对 Multer 文件名有疑问。
那么当multer以随机文件名存储文件时,会不会出现两个文件在multer中同名的情况?
基本上我想说的是如果我存储大量用户的文件,文件名会重复吗?我可以相信 multer 吗?还是我必须编写一个单独的函数来为每个文件提供唯一的文件名?
从 npm 页面 here,我们可以看到 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 个文件在不同时间保存,则它们具有不同的名称。理论上,如果系统同时(以毫秒为单位)保存2个文件,它们将具有相同的名称。
因此,这并不取决于您存储了多少文件,而是取决于请求到达您的系统的速度。如果你每秒有超过 1000 个请求,就会有重复的机会。在这种情况下,您应该使用 UUID 之类的东西。否则,Date.now()
完成工作。
我对 Multer 文件名有疑问。
那么当multer以随机文件名存储文件时,会不会出现两个文件在multer中同名的情况?
基本上我想说的是如果我存储大量用户的文件,文件名会重复吗?我可以相信 multer 吗?还是我必须编写一个单独的函数来为每个文件提供唯一的文件名?
从 npm 页面 here,我们可以看到 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 个文件在不同时间保存,则它们具有不同的名称。理论上,如果系统同时(以毫秒为单位)保存2个文件,它们将具有相同的名称。
因此,这并不取决于您存储了多少文件,而是取决于请求到达您的系统的速度。如果你每秒有超过 1000 个请求,就会有重复的机会。在这种情况下,您应该使用 UUID 之类的东西。否则,Date.now()
完成工作。