1

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

我有一个在 Amazon EC2 实例上运行的快速应用程序,其 Node.JS 通过 POST 请求接受文件上传。目的是上传一个包含图像的 zip 文件,提取它们,然后将每个单独的图像放在 Amazon S3 上。

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

4

1 回答 1

0

我认为您无法在“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) {

        });
    };


});
于 2012-10-27T18:37:53.570 回答