0

我正在使用 Amazon S3,我的存储桶在输入文件夹中有多个文件。我需要获取文件夹中的所有文件并处理它,现在我可以获取一个文件并通过提供键值来处理它。但不确定如何一次性获取存储桶中的所有文件(输入是我在存储桶中的文件夹名称)。请在下面找到我的配置

 <s3:config name="Amazon_S3" accessKey="myKey" secretKey="MySecretkey" doc:name="Amazon S3"/>
<flow name="s3Flow1" doc:name="s3Flow1">
    <http:inbound-endpoint exchange-pattern="one-way" host="localhost" port="8081" doc:name="HTTP"/>
   <logger message="*********Inside yes************" level="INFO" doc:name="Logger"/> 
    <s3:list-objects config-ref="Amazon_S3" bucketName="getfiles"  doc:name="Amazon S3" maxKeys="5" delimiter="/" prefix="input/"/>
    <json:object-to-json-transformer doc:name="Object to JSON"/>
    <logger message="..InsidePay..#[payload]********" level="INFO" doc:name="Logger"/>
    <s3:get-object-content config-ref="Amazon_S3" bucketName="my_backetName" key="input/test.xml"  doc:name="Amazon S3"/>
    <file:outbound-endpoint path="C:\OUT" responseTimeout="10000" doc:name="File" outputPattern="#[function:dateStamp].xml"/>
</flow>

当它尝试在 Key =input/* 中添加更多文件名或 * 值时。它正在抛出错误。请帮助我解决问题。提前致谢。

4

1 回答 1

1

您需要获取每个文件的对象内容。为此,您可以使用foreach路由器并使用#[payload.getKey()]来获取当前对象的密钥:

<s3:list-objects config-ref="Amazon_S3" bucketName="getfiles"  doc:name="Amazon S3" maxKeys="5" delimiter="/" prefix="input/"/>

<foreach doc:name="For Each file">
 <s3:get-object-content config-ref="Amazon_S3" bucketName="my_backetName" key="#[payload.getKey()]"  doc:name="Amazon S3"/>
</foreach>
于 2014-09-21T10:48:02.263 回答