关于NodeJS,S3和Zips的大多数问题都与我想做的相反。上传zip,并将文件解压缩到S3。
我在Amazon EC2实例上运行了一个快速应用程序,Node.JS通过POST请求接受文件上传。目的是上传一个包含图像的zip文件,将其解压缩,并将每个单独的图像放在Amazon S3上。
我使用express.js接受发布的文件,我一直在玩AdmZip来阅读上传的zip文件。使用AdmZip,我可以将zip文件解压缩到服务器磁盘,然后在临时目录中循环每个提取的图像,然后将其发送到Amazon S3,但这似乎非常低效。 我已经阅读了很多关于将文件从S3传输到Node并在运行中进行压缩的文章。我想我想知道的是反过来是否可行。
答案 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) {
});
};
});