fix files in linux
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user