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

标签 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 并动态压缩的内容。我想我想知道的是这是否可以逆转。

最佳答案

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

        });
    };


});

关于node.js - 解压 .zip,然后使用 Node.js 将内容存储在 S3 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13100746/

相关文章:

node.js - Nodejs - Cassandra 客户端错误 : All connections are unhealthy

javascript - 在 NodeJs 中,为什么新的 Date 构造函数将默认时间设置为上午 7 点?

javascript - 通过提供值列表(字符串)构造键值对数组

linux - 是否有通过 s3cmd 工具设置 cors(跨源资源共享)的选项?

node.js - Meteor服务器端远程调试

apache - Amazon EC2 中的 Docker 部署错误 - Docker 容器意外退出

node.js - 使用 fs.writeFile 时出现 ENOENT 错误

javascript - 如何使 jsDoc "import"与 vscode 一起工作?

caching - Redis 缓存未命中行为

java - 如何向亚马逊S3添加带有汉字的文件