Моя цель - добавить все файлы, выбранные во время многофайловой загрузки, в одну и ту же zip-папку. На данный момент мой код создает несколько zip-папок для каждого файла. Я предполагаю, что Multer создает состояние загрузки по одному, и это является причиной этого, но я не могу найти способ обойти это. Кто-нибудь имел дело с таким сценарием? Спасибо за любые рекомендации.
CustomStorage. js
var fs = require('fs')
var zlib = require('zlib')
function getDestination(req, file, cb) {
cb(null, './storage')
}
function MyCustomStorage(opts) {
this.getDestination = (opts.destination || getDestination)
}
MyCustomStorage.prototype._handleFile = function _handleFile(req, file, cb) {
this.getDestination(req, file, function (err, path) {
if (err) return cb(err)
var outStream = fs.createWriteStream(path + '.gz')
const gzip = zlib.createGzip();
file.stream.pipe(gzip).pipe(outStream);
// file.stream.pipe(outStream)
outStream.on('error', cb)
outStream.on('finish', function () {
cb(null, {
path: path,
size: outStream.bytesWritten
})
})
})
}
MyCustomStorage.prototype._removeFile = function _removeFile(req, file, cb) {
fs.unlink(file.path, cb)
}
module.exports = function (opts) {
return new MyCustomStorage(opts)
}