解压缩.zip,然后使用Node.js将内容存储在S3中

时间:2012-10-27 13:50:15

标签: node.js amazon-s3 amazon-ec2

关于NodeJS,S3和Zips的大多数问题都与我想做的相反。上传zip,并将文件解压缩到S3。

我在Amazon EC2实例上运行了一个快速应用程序,Node.JS通过POST请求接受文件上传。目的是上传一个包含图像的zip文件,将其解压缩,并将每个单独的图像放在Amazon S3上。

我使用express.js接受发布的文件,我一直在玩AdmZip来阅读上传的zip文件。使用AdmZip,我可以将zip文件解压缩到服务器磁盘,然后在临时目录中循环每个提取的图像,然后将其发送到Amazon S3,但这似乎非常低效。 我已经阅读了很多关于将文件从S3传输到Node并在运行中进行压缩的文章。我想我想知道的是反过来是否可行。

1 个答案:

答案 0 :(得分:0)

我不认为你能够提取文件" on" S3。您必须将zip保存在/ temp中,然后将单个文件提取并上传到s3。

尝试这样的事情:

app.post('/upload', function (req, res, next) { 

  myZip = req.files.myZipfile

  var zip = new require('node-zip')(myZip, {base64: false, checkCRC32: true});

  knox = require('knox');
  s3 = knox.createClient({"key": "", "secret": "", "bucket": ""})


  // You might need to try something like async here to throttle the putFile command
    for (var i = zip.files.length - 1; i >= 0; i--) { 

        s3.putFile(zip.files[i], path.basename(zip.files[i]), function(err, res) {

        });
    };


});