首页 > 解决方案 > Multer 唯一文件名

问题描述

我对 Multer Filename 有疑问。

那么当一个multer用一个随机的fileName存储文件时,是否会出现两个文件在multer中具有相同名称的情况?

基本上我想说的是,如果我要存储大量用户的文件,文件名可以重复吗?我可以信任 multer 还是必须编写一个单独的函数来为每个文件提供唯一的文件名?

标签: javascriptnode.jsnpmmulter

解决方案


这里的 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()做这项工作。

  • Date.now()您可以在此处阅读更多信息。
  • 关于 UUID 的 Wikipedia 页面在这里,以备不时之需。它还有一个 npm 包。

推荐阅读