我有一个数据库表,其中包含id, filename, userId
- id 是唯一标识符
- 文件名也应该是唯一的
- 表可能包含 >10000 条记录
当用户上传文件时,应按照给定规则将其输入数据库:
- 如果没有具有相同文件名的记录,则应按原样添加(例如foobar.pdf)
- 如果有相同文件名的记录,则应添加为 uploadName(2).ext ( foobar(2).pdf )
- 如果有 n 条具有相同基本文件名 ( foobar ) 的记录,则应将其添加为 uploadName(n+1).ext ( foobar(20).pdf )
- 现在如果foobar(2).pdf被上传,它应该被添加为foobar(2)(2).pdf等等
需要遵循此模式,因为在将详细信息发送到服务器之前,文件已经在客户端使用 ajax 上传,并且文件托管服务遵循上述规则来命名文件。
我的解决方案:
- 维护一个包含所有名称和发生次数的文件。
- 如果输入文件中存在的文件名,则增加出现次数并生成新名称,否则将其添加到文件中
- 如果生成的新名称在数据库中,则将其添加到文件并生成新名称