Spaces:
Sleeping
Sleeping
| var archiver = require('archiver'); | |
| var fs = require('fs'); | |
| var os = require('os'); | |
| var path = require('path'); | |
| module.exports = (file, io, data) => { | |
| // Use os.tmpdir() to get the system's temporary directory | |
| var tempDir = os.tmpdir(); | |
| // Construct the path for the zip file in the temp directory | |
| var outputPath = path.join(tempDir, file + '.zip'); | |
| var output = fs.createWriteStream(outputPath); | |
| var archive = archiver('zip', { | |
| zlib: { level: 9 } // Sets the compression level. | |
| }); | |
| // listen for all archive data to be written | |
| output.on('close', function() { | |
| console.log(archive.pointer() + ' total bytes'); | |
| console.log('archiver has been finalized and the output file descriptor has closed.'); | |
| io.emit(data.token, { progress: "Completed", file: outputPath }); | |
| }); | |
| // This event is fired when the data source is drained no matter what was the data source. | |
| output.on('end', function() { | |
| console.log('Data has been drained'); | |
| }); | |
| // good practice to catch warnings (ie stat failures and other non-blocking errors) | |
| archive.on('warning', function(err) { | |
| if (err.code === 'ENOENT') { | |
| // log warning | |
| } else { | |
| // throw error | |
| throw err; | |
| } | |
| }); | |
| // good practice to catch this error explicitly | |
| archive.on('error', function(err) { | |
| throw err; | |
| }); | |
| // pipe archive data to the file | |
| archive.pipe(output); | |
| // append files from a sub-directory and naming it `new-subdir` within the archive | |
| archive.directory('./' + file, false); | |
| // finalize the archive | |
| archive.finalize(); | |
| } | |