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
Java AmazonS3API:列出并获取;文件夹";目录_Java_Amazon S3 - Fatal编程技术网

Java AmazonS3API:列出并获取;文件夹";目录

Java AmazonS3API:列出并获取;文件夹";目录,java,amazon-s3,Java,Amazon S3,我知道,并且我在ListObjectsRequest中使用了s3Client.listObjects(req)方法。它工作得很好。您可以创建一个对象: ListObjectsRequest () .withBucketName (bucket) .withPrefix (folderPath) .withDelimiter (DELIMITER) 在某些情况下,模拟文件夹结构对于获取摘要非常有用。 有一种方法可以使用相同的前缀和分隔符逻辑来获取完整对象,而不是摘要当您想

我知道,并且我在ListObjectsRequest中使用了s3Client.listObjects(req)方法。它工作得很好。您可以创建一个对象:

ListObjectsRequest ()
    .withBucketName (bucket)
    .withPrefix (folderPath)
    .withDelimiter (DELIMITER)
在某些情况下,模拟文件夹结构对于获取摘要非常有用。

有一种方法可以使用相同的前缀和分隔符逻辑来获取完整对象,而不是摘要当您想要获取一些有限的对象时,这可能非常有用

另一种方法是启动一个列表并得到“n”,但我想知道是否有任何方法可以启动单个调用(单个http调用)

比如:

GetObjectsRequest ()
           .withBucketName (bucket)
           .withPrefix (folderPath)
           .withDelimiter (DELIMITER)

它会返回完整的对象。。。(或分页列表

底层没有此功能。对象必须单独获取。我想到的唯一一个操作是在单个API操作的上下文中对多个对象进行操作

当然,任何给定的S3 bucket都可以处理大量并发的
GET
请求,因此,如果您利用您选择的语言提供的异步和/或多线程功能,就可以在短时间内获取所有对象


如果对象体非常小,还可以将其封装在Lambda函数中,该函数将完成所有工作并打包所有内容,从而使调用代码更整洁。但是Lambda函数有一个用于请求和响应的。。。因此,要使这种方法起作用,对象必须很小。

澄清一下:“完整的对象”是指所有列出的对象的整个主体和元数据?是的,使用“get”方法得到完整的对象。我认为,如果列表(S03SummaryItem)的结果返回的内容超过键,这将是可取的(所有者和其他人)。至少是自定义元数据。我看到API用户对该实用程序的需求很长一段时间了,而且它还没有发展)(