Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅使用1个请求[C#AWSSDK]检索2个S3对象及其内容_C#_Amazon S3_.net Core_Aws Sdk - Fatal编程技术网

仅使用1个请求[C#AWSSDK]检索2个S3对象及其内容

仅使用1个请求[C#AWSSDK]检索2个S3对象及其内容,c#,amazon-s3,.net-core,aws-sdk,C#,Amazon S3,.net Core,Aws Sdk,我有以下文件: “BucketName” 折叠1 美国 file1.zip file2.zip 加拿大 file1.zip file2.zip 是否有一种方法可以从“BucketName/folder1/”路径中检索内容(即列出键),该路径将为我提供**usa**和**canada**对象的文件,以请求S3 目前,我有以下代码向S3发出2个请求,我试图避免检索这两个国家/地区的所有文件: public List<string> GetShapefiles(str

我有以下文件:

“BucketName”

  • 折叠1
    • 美国
      • file1.zip
      • file2.zip
    • 加拿大
      • file1.zip
      • file2.zip
是否有一种方法可以从“BucketName/folder1/”路径中检索内容(即列出键),该路径将为我提供
**usa**
**canada**
对象的文件,以请求S3

目前,我有以下代码向S3发出2个请求,我试图避免检索这两个国家/地区的所有文件:

public List<string> GetShapefiles(string country)
{

    var s3Request = new ListObjectsV2Request
    {
        BucketName = BucketName,
        Delimiter = "/"
    };

    if (country == "US")
    {
        s3Request.Prefix = "BucketName/folder1/usa/";

        return GetShapeFileList(s3Request);
    }

    else if (country == "Canada")
    {
        s3Request.Prefix = "BucketName/folder1/canada/";

        return GetShapeFileList(s3Request);
    }

}

    private List<string> GetShapeFileList(ListObjectsV2Request request)
{
    var result = new List<string>();
    ListObjectsV2Response response;

        do
        {
            response = S3_CLIENT.ListObjectsV2Async(request).Result;

            foreach (var file in response.S3Objects.Where(f => f.Key.LastIndexOf('/') != f.Key.Length - 1))
            {
                result.Add(file.Key);
            }

            request.ContinuationToken = response.NextContinuationToken;
        } while (response.IsTruncated);

        return result;
}
AmazonS3不支持每次获取多个数据范围 请求。

-


你最好的选择是继续你正在做的事情——遍历你的对象并检索每个对象。这可以同时完成,也可以异步完成——我建议并行地从S3获取每个对象。祝你好运

谢谢你的评论。知道这不受支持确实有帮助。
/usa/file1.zip
/usa/file2.zip
/canada/file1.zip
/canada/file2.zip