fix files in linux

This commit is contained in:
2026-05-13 20:48:12 +03:00
parent 68d039ccdd
commit 21ba68dd35

View File

@@ -106,17 +106,35 @@ utils.srcPath = function (srcDir, filename) {
return `${srcDir}/${path.basename(files[0])}` return `${srcDir}/${path.basename(files[0])}`
} }
utils.truncateFilename = function (filename, maxBytes = 255) {
if (Buffer.byteLength(filename, 'utf8') <= maxBytes) {
return filename
}
const ext = path.extname(filename)
const base = path.basename(filename, ext)
const maxBaseBytes = maxBytes - Buffer.byteLength(ext, 'utf8')
let bytes = 0
let i = 0
while (i < base.length) {
const charBytes = Buffer.byteLength(base[i], 'utf8')
if (bytes + charBytes > maxBaseBytes) break
bytes += charBytes
i++
}
return base.slice(0, i) + ext
}
utils.destPath = function (destDir, type, file) { utils.destPath = function (destDir, type, file) {
let dest = `${destDir}/${type}/${file._id}/${file.name}`; let name = file.name
const ext = path.extname(dest) const ext = path.extname(name)
if (!ext || !/^\.[A-Za-z][A-Za-z0-9]*$/.test(ext)) { if (!ext || !/^\.[A-Za-z][A-Za-z0-9]*$/.test(ext)) {
if (file.identify && file.identify.format) { if (file.identify && file.identify.format) {
dest += '.' + file.identify.format name += '.' + file.identify.format
} else { } else {
dest += '.' + file.type.split('/')[1] name += '.' + file.type.split('/')[1]
} }
} }
return dest return `${destDir}/${type}/${file._id}/${utils.truncateFilename(name)}`
} }
utils.exportFile = async function (context, collection, fileId) { utils.exportFile = async function (context, collection, fileId) {