如何使用node js从基于扩展名(.zip)的s3存储桶下载最近上传的zip文件

时间:2017-04-12 17:13:25

标签: node.js amazon-s3

  

实际上从我的应用程序中,他们将生成大量的zip文件和   上传到s3桶。

     

zip文件名将类似于dfghgghg5565hgghghgh55.zip,   fdfdfdfd44545ghghghg.zip。可以是任何名字。

     

那么如何根据文件扩展名(.zip)下载这些zip文件?

2 个答案:

答案 0 :(得分:0)

如果您知道正在处理的存储桶,则可以在该存储桶上调用ListObjectsListObjectsv2以从中获取最多1000个对象。

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listObjects-property

var params = {
  Bucket: 'STRING_VALUE', /* required */
  Delimiter: 'STRING_VALUE',
  EncodingType: url,
  Marker: 'STRING_VALUE',
  MaxKeys: 0,
  Prefix: 'STRING_VALUE',
  RequestPayer: requester
};
s3.listObjects(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
  // put code here to filter out just the .zips, then you can request those files with a GetObject() request
});

答案 1 :(得分:0)

只要您想获取有关新文件的信息,就可以手动调用lambda函数。使用此代码,您将始终获得修改/创建的最后一个文件。

var intValue = Items
    .Where(x => x.Value is int) // filter per Value is int
    .ToDictionary(x => x.Key, x => (int)x.Value); // create a new dictionary converting Value to int

但是我们可以遇到这样的问题,如果没有创建新文件,它将会多次提取同一个文件。我后来建议使用文件删除或找到另一种方法来识别该文件已经被使用过。

我希望它能帮到你!