FileDecompressor.js 923 B

123456789101112131415161718192021222324252627282930313233
  1. const decompress = require('decompress');
  2. const FileDetector = require('./FileDetector');
  3. class FileDecompressor {
  4. constructor() {
  5. this.detector = new FileDetector();
  6. }
  7. async decompressFile(filename, outputDir) {
  8. const fileType = await this.detector.detectFile(filename);
  9. if (!fileType || !(fileType.ext == 'zip' || fileType.ext == 'bz2'))
  10. return filename;
  11. const files = await decompress(filename, outputDir);
  12. let result = filename;
  13. let max = 0;
  14. if (files.length) {
  15. //ищем файл с максимальным размером
  16. for (let file of files) {
  17. if (file.data.length > max) {
  18. result = `${outputDir}/${file.path}`;
  19. max = file.data.length;
  20. }
  21. }
  22. }
  23. return result;
  24. }
  25. }
  26. module.exports = FileDecompressor;