【发布时间】:2020-08-01 11:33:56
【问题描述】:
现在当文件已经存在时,我添加了前缀,它是文件名的时间戳以使其唯一。
但我不想使用时间戳,而是想使用序数后缀或在文件名中添加一个数字。
如果文件存在,我会在文件名中添加一个递增的数字。但我无法完全理解如何以一种好的方式做到这一点。
使用时间戳有效,但它太长了,就像我们显示文件名时一样,例如,我不想使用时间戳,而是想为文件名增加一个数字。
Hellworldfilename - 1593024232 - 时间戳太长,不是一个好主意。
它应该基于数据库中的现有记录。例如,如果我添加一个文件名为 Hellworldfilename 的文件并且它已经存在,那么新文件名将是 Hellworldfilename-1 ,如果我再次添加 Hellworldfilename ,新文件名将是 Hellworldfilename-2 等等。知道如何让文件名每次都独一无二吗?
让我举个例子。假设我在数据库中有 3 个文件名的文件
DOC
DOC-1
DOC-2
如果我添加一个文件名为 DOC 的文件,新文件名现在将是 DOC-3。
#检查文件是否存在的代码
const file = await context.service.Model.findOne({
where: { humanId: record.id, filename: data.filename },
paranoid: false,
});
if (file) {
const prefix = Date.now().toString();
// eslint-disable-next-line no-undef
const fileParts = data.filename.split('.');
filename = `${fileParts[0]}-${prefix}.${fileParts[1]}`;
【问题讨论】:
-
以 uuidv4 为例?
-
问题是我在前端显示这些文件名并且看到带有长 UUID 的名称不是一个好主意。
-
例如,如果我使用 UUID,文件名将是 Helloworldfilename-123e4567-e89b-12d3-a456-426614174000,那太长了。
-
在数据库中写入“用户友好名称”并将文件作为 uuid 字符串存储在文件系统中。
-
在文件名中插入数字真的很难吗?会不会更简单?
标签: javascript node.js typescript