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() 完成工作。

  • 您可以阅读有关 Date.now()here 的更多信息。
  • 关于 UUID here 的维基百科页面,以备不时之需。它还有一个 npm 包。