1

NodeJS、S3、および Zip に関するほとんどの質問は、私がやりたいこととは正反対です。zip をアップロードし、ファイルを S3 に抽出します。

POST リクエストを介してファイルのアップロードを受け入れる Node.JS を使用して、Amazon EC2 インスタンスで実行されているクイック アプリがあります。目的は、画像でいっぱいの zip ファイルをアップロードして抽出し、個々の画像を A​​mazon S3 に配置することです。

投稿されたファイルを受け入れるためにexpress.jsを使用しており、アップロードされたzipファイルを読み取るためにAdmZipで遊んでいます。AdmZip を使用すると、zip ファイルをサーバー ディスクに抽出し、抽出した各画像を一時ディレクトリにループして、Amazon S3 に送信できますが、これは非常に非効率的です。S3 からノードへのファイルのストリーミングと、その場での圧縮についてかなり読んだことがあります。私が知りたいのは、これが逆に可能かどうかだと思います。

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 に答える