大多数关于NodeJS、S3和Zip的问题都与我想要做的相反。上传一个压缩包,并将文件解压缩到S3。
我有一个在亚马逊EC2实例上运行的快速应用程序,带有Node.JS,它通过POST请求接受文件上传。其目的是上传一个充满图片的压缩文件,提取它们,并将每个单独的图片放在亚马逊S3上。
我正在使用express.js接受发布的文件,并且我一直在使用AdmZip来读取上传的压缩文件。使用AdmZip,我可以将压缩文件解压缩到服务器磁盘,然后循环遍历临时目录中的每个解压缩图像,然后将其发送到亚马逊S3,但这似乎非常低效。我读过很多关于从S3到Node的流式文件和动态压缩文件的文章。我想我想知道的是,这是否有可能发生逆转。
发布于 2012-10-28 02:37:54
我不认为你能在S3上解压这个文件。你必须将压缩包保存在/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) {
});
};
});https://stackoverflow.com/questions/13100746
复制相似问题