minizip-asm提取功能需要永久执行

时间:2018-07-30 10:46:24

标签: node.js google-cloud-functions

我正在尝试从Google存储设备中获取AES加密密码保护的zip文件,并从中提取一个csv文件。我正在节点6上使用谷歌云功能。 我尝试使用minizip-asm.js库提取文件。它间歇性地工作。我是节点的新手,因此非常感谢您的帮助:)。 这是可能有帮助的相关代码段。有人可以帮我弄清楚这里出了什么问题。

exports.processFile = (event, callback) => {
const file = event.data;
const filename = file.name;
const projectId = "abc1234";
const bucketName = "abc_reports";

const Storage = require('@google-cloud/storage');
const storage = Storage({
    projectId: projectId
});
const folder = storage.bucket(bucketName);
const minizip = require('minizip-asm.js');







if (file.metageneration === '1' && filename.match(".zip") != null) {
    // metageneration attribute is updated on metadata changes.
    // on create value is 1
    console.log(`File ${file.name} uploaded.`);






      folder.file(filename).download().then(function(data) {
        console.log('Download of file complete');




            //create csv file 
            var csvName = filename.split(".zip")[0] + ".csv"

          var mz = new minizip(data[0]);
       console.log(data[0]);
            console.log(mz.list());

            var extract = mz.extract(mz.list()[0].filepath,{
              password: 'ABC@123'
            })
            console.log("extracted");





        //write unzipped contents to file

        folder.file(csvName).save(extract, function(err) {
                if (!err) {
                    console.log("unzipped csv");
                    }
                else console.log("Error in saving csv : "+err);
                });

       }); 
      });
}

callback(null, 'Success!');
};

感谢您的帮助。

0 个答案:

没有答案