Оптимизации проверок типа файла

This commit is contained in:
Book Pauk
2020-12-19 03:05:58 +07:00
parent 0b63bce357
commit b174ae452b
3 changed files with 11 additions and 4 deletions

View File

@@ -104,7 +104,7 @@ class ConvertBase {
} }
isDataXml(data) { isDataXml(data) {
const str = data.toString().trim(); const str = data.slice(0, 100).toString().trim();
return (str.indexOf('<?xml version="1.0"') == 0 || str.indexOf('<?xml version=\'1.0\'') == 0 ); return (str.indexOf('<?xml version="1.0"') == 0 || str.indexOf('<?xml version=\'1.0\'') == 0 );
} }

View File

@@ -13,22 +13,29 @@ class ConvertFb2 extends ConvertBase {
} }
async run(data, opts) { async run(data, opts) {
let newData = data; let newData = data.slice(0, 1024);
//Корректируем кодировку, 16-битные кодировки должны стать utf-8 //Корректируем кодировку для проверки, 16-битные кодировки должны стать utf-8
const encoding = textUtils.getEncoding(newData); const encoding = textUtils.getEncoding(newData);
if (encoding.indexOf('UTF-16') == 0) { if (encoding.indexOf('UTF-16') == 0) {
newData = Buffer.from(iconv.decode(newData, encoding)); newData = Buffer.from(iconv.decode(newData, encoding));
} }
//Проверяем
if (!this.check(newData, opts)) if (!this.check(newData, opts))
return false; return false;
//Корректируем кодировку всего объема
if (encoding.indexOf('UTF-16') == 0) {
newData = Buffer.from(iconv.decode(data, encoding));
}
//Корректируем пробелы, всякие файлы попадаются :( //Корректируем пробелы, всякие файлы попадаются :(
if (newData[0] == 32) { if (newData[0] == 32) {
newData = Buffer.from(newData.toString().trim()); newData = Buffer.from(newData.toString().trim());
} }
//Окончательно корректируем кодировку
return this.checkEncoding(newData); return this.checkEncoding(newData);
} }

View File

@@ -16,7 +16,7 @@ class ConvertHtml extends ConvertBase {
} }
//из буфера обмена? //из буфера обмена?
if (data.toString().indexOf('<buffer>') == 0) { if (data.slice(0, 50).toString().indexOf('<buffer>') == 0) {
return {isText: false}; return {isText: false};
} }