Как обрабатывать несколько файлов с помощью многоцелевого механизма хранения? - PullRequest
0 голосов
/ 12 июля 2020

Моя цель - добавить все файлы, выбранные во время многофайловой загрузки, в одну и ту же 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...