Roh*_*hit 3 javascript pagination amazon-s3 amazon-web-services node.js
我想使用 aws s3 实现分页。对象 ms.files 中有 500 个文件,但我想一次只检索 20 个文件,下次再检索 20 个文件,依此类推。
var params = {
Bucket: 'mystore.in',
Delimiter: '/',
Prefix: '/s/ms.files/',
Marker:'images',
};
s3.listObjects(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
Dav*_*ung 10
在寻找一次列出所有对象时遇到了这个问题,如果您的响应被截断,它会为您提供一个标志isTruncated = true
和一个用于下一次调用的 continuationToken
如果你在 es6 上,你可以这样做,
const AWS = require('aws-sdk');
const s3 = new AWS.S3({});
const listAllContents = async ({ Bucket, Prefix }) => {
// repeatedly calling AWS list objects because it only returns 1000 objects
let list = [];
let shouldContinue = true;
let nextContinuationToken = null;
while (shouldContinue) {
let res = await s3
.listObjectsV2({
Bucket,
Prefix,
ContinuationToken: nextContinuationToken || undefined,
})
.promise();
list = [...list, ...res.Contents];
if (!res.IsTruncated) {
shouldContinue = false;
nextContinuationToken = null;
} else {
nextContinuationToken = res.NextContinuationToken;
}
}
return list;
};
Run Code Online (Sandbox Code Playgroud)
Roh*_*hit -1
Jarmod 先生分享的解决方案:
var params = {
Bucket: 'mystore.in',
Delimiter: '/',
Prefix: '/s/ms.files/',
Marker:'',
MaxKeys : 20
};
s3.listObjects(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8302 次 |
最近记录: |