Разархивировать файлы из облачного хранилища через облачные функции - PullRequest
0 голосов
/ 03 июля 2018

В моем Google Облачном хранилище есть gzip-файлы, и я должен проверить контрольную сумму файла, который заархивирован внутри, с помощью Облачных функций .

Я начал работать с примером распаковки из этого примера , но он работает только с файлами ZIP, а не с gzip:

gcsSrcObject.createReadStream()
    .pipe(unzipper.Parse())
    .pipe(stream.Transform({
        objectMode: true,
        transform: function (entry, e, callback) {
            var filePath = entry.path;
            var type = entry.type;
            var size = entry.size;
            console.log(`Found ${type}: ${filePath}`);
            console.log(`Unzipping to: ${TEMP}/${prefix}/${filePath}`)
            var gcsDstObject = dstBucket.file(`${TEMP}/${prefix}/${filePath}`);
            entry
                .pipe(gcsDstObject.createWriteStream())
                .on('error', function (err) {
                    console.log(`Error: ${err}`);
                })
                .on('finish', function () {
                    console.log('Complete');
                    callback();
                });
        }
    }));

Я также прочитал документацию о собственных функциях хранения (gsutil cp), но он позволяет вам только копировать файлы GZIP из локальной копии.

1 Ответ

0 голосов
/ 03 июля 2018

Помните, что если ваши файлы хранятся в GCS с помощью «Content-Encoding: gzip», то вы можете распаковать их на лету прозрачно. GCS называет это «транскодированием»

https://cloud.google.com/storage/docs/transcoding

...