Промежуточный коммит, загрузка и обработка файла книги
This commit is contained in:
35
server/core/FileDecompressor.js
Normal file
35
server/core/FileDecompressor.js
Normal file
@@ -0,0 +1,35 @@
|
||||
const fs = require('fs-extra');
|
||||
const decompress = require('decompress');
|
||||
const FileDetector = require('./FileDetector');
|
||||
|
||||
class FileDecompressor {
|
||||
constructor() {
|
||||
this.detector = new FileDetector();
|
||||
}
|
||||
|
||||
async decompressFile(filename, outputDir) {
|
||||
const fileType = await this.detector.detectFile(filename);
|
||||
|
||||
if (!(fileType.ext == 'zip' || fileType.ext == 'bz2'))
|
||||
return filename;
|
||||
|
||||
const files = await decompress(filename, outputDir);
|
||||
|
||||
let result = filename;
|
||||
let max = 0;
|
||||
if (!files.length) {
|
||||
//ищем файл с максимальным размером
|
||||
for (let file of files) {
|
||||
const stats = await fs.stat(file);
|
||||
if (stats.size > max) {
|
||||
result = file;
|
||||
max = stats.size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = FileDecompressor;
|
||||
Reference in New Issue
Block a user