现在,当文件已经存在时,我为文件名添加了前缀,这是一个时间戳,以使其唯一。
但是我想使用序号后缀,而不是使用时间戳。我们如何实现或在文件名中添加序号后缀?例如,数据库中有一个文件名为HELLOWORLD的现有文件。然后,我再次添加一个文件名为HELLOWORLD的文件,因为它已经存在,现在新的文件名将是HELLOWORLD- exist。如果我再次添加一个文件名为HELLOWORLD的文件,它将检查文件的更新,最新的文件名为HELLOWORLD -1,因此新的文件名现在将为HELLOWORLD-2,因为HELLOWORLD和HELLOWORLD-1已经存在。你知道我们怎样才能实现这样的东西吗?谢谢。
#检查记录是否存在的代码
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]}`;
}#序数后缀函数
function ordinal_suffix_of(i) {
var j = i % 10,
k = i % 100;
if (j == 1 && k != 11) {
return i + "st";
}
if (j == 2 && k != 12) {
return i + "nd";
}
if (j == 3 && k != 13) {
return i + "rd";
}
return i + "th";
}发布于 2020-08-02 06:51:16
您可以重复循环,直到找到数据库中不存在的filename:
let basename = filename = data.filename
let suffix = 0
while (true) {
const file = await context.service.Model.findOne({
where: { humanId: record.id, filename: filename },
paranoid: false,
})
if ( ! file ) {
break; // filename does not exist in DB, so exit loop
}
let ordinal_suffix = ordinal_suffix_of( ++suffix )
filename = `${basename}-${ordinal_suffix}`
}
// filename is now guaranteed to be unique如果数据库中存在filename,它会附加所需的序号后缀(1、2、3等)。并继续查找,直到在数据库中找不到具有该名称的文件。
https://stackoverflow.com/questions/63201346
复制相似问题