有关 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/