0
@Autowired
private ResourcePatternResolver resourcePatternResolver;

String s3path = req.s3Folder+"/key1/key123/*.gz";

Resource[] allTxtFilesInFolder  = resourcePatternResolver.getResources(s3path);

我正在尝试使用 spring-cloud-starter-aws 从 s3 读取文件。无论如何,当完全指定文件名并且不适用于通配符时,它运行良好。

这是我在日志中看到的

INFO [main] [.isPathMatchingResourcePatternResolver]:无法解析文件系统中的 Amazon s3 资源 [bucket='bucketname' and object='2l6hpfhfryz8422qr8nxy8x0a2-0/key1/key123']:java.lang.UnsupportedOperationException:Amazon S3 资源不能被解析为 java.io.File 对象。使用 getInputStream() 来检索对象的内容!

为什么被PathMatchingResourcePatternResolver称为而不是PathMatchingSimpleStorageResourcePatternResolver

4

1 回答 1

2

经过研究,我找到了这个问题的答案。我必须明确地将 resourcePatternResolver 自动连接为 PathMatchingSimpleStorageResourcePatternResolver

private ResourcePatternResolver resourcePatternResolver;

    @Autowired
    public void setupResolver(ApplicationContext applicationContext, AmazonS3 amazonS3){
        this.resourcePatternResolver = new PathMatchingSimpleStorageResourcePatternResolver(amazonS3, applicationContext);
    }

参考 - https://cloud.spring.io/spring-cloud-static/spring-cloud-aws/2.0.0.RELEASE/multi/multi__resource_handling.html

于 2019-12-12T23:57:39.003 回答