gpt4 book ai didi

java - 尝试列出对象时,AmazonS3 客户端 org.xml.sax.SAXParseException

转载 作者:行者123 更新时间:2023-12-01 21:34:24 25 4
gpt4 key购买 nike

运行 AmazonS3 的 listObjects(..) 方法时,我遇到了一些戏剧性的问题。我确信我的凭据设置正确,因为我能够使用 s3Client.getObject(..) 下载单个文件。日志内容如下:

com.amazonaws.SdkClientException: Failed to parse XML document with handler class
com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser$ListObjectsV2Handler
Caused by: org.xml.sax.SAXParseException: Premature end of file.

我知道 listObjects(..) 确实在其响应中包含了一些包含元数据的 xml。重现错误的代码非常简单。我看不出有什么问题:(

ListObjectsRequest listObjectsRequest = new ListObjectsRequest() .withBucketName(ENV.getProperty("cloud.aws.s3.bucket"));

对象列表对象列表= amazonS3Client.listObjects(listObjectsRequest);

这是我正在使用的 spring-cloud-aws-context 版本:: <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-context</artifactId
<version>1.2.1.RELEASE</version>
</dependency>

有人有见解吗?或者知道这个问题吗?

提前致谢:)

最佳答案

我遇到了确切的异常*无法使用处理程序类解析XML文档*并且该失败并不是真正的描述性的。但我的问题不是权限,而是尝试直接列出存储桶子文件夹。

我试图列出/bucketName/subFolder/subFolder2 中的对象,而不仅仅是/bucketName 和前缀。

这会导致上面的异常(在 Scala 中):

val path = "/bucketName/myFolder/subFolder"
val results = s3Client.listObjectsV2(path)

我需要将存储桶名称和前缀分开,然后使用 ListObjectRequestV2

val path = "/bucketName/myFolder/subFolder"
val bucketName = "bucketName"
val prefix = "myFolder/subFolder"
val listObjectsRequest = new
val ListObjectsV2Request().withBucketName(bucketName).withPrefix(prefix)
val results = s3Client.listObjectsV2(path)

关于java - 尝试列出对象时,AmazonS3 客户端 org.xml.sax.SAXParseException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46117346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com