我正在从文件组件中读取文件,示例文件名为TestCustomer.xml
。我需要压缩文件(ZIP格式)并将其放在名为TestCustomer.zip
的文件组件上。在仅提取文件时,它应在外部反映为TestCustomer.xml
。
我尝试过多种方式,但它没有按预期的出站文件夹outputPattern
工作。
尝试为TestCustomer.xml - 响应为TestCustomer.xml(由于格式不正确,无法提取文件)。
<flow name="testzipFlow1" doc:name="testzipFlow1">
<file:inbound-endpoint path="c:/in" connector-ref="File" responseTimeout="10000" doc:name="File"/>
<logger level="INFO" doc:name="Logger"/>
<gzip-compress-transformer></gzip-compress-transformer>
<file:outbound-endpoint outputPattern="TestCustomer.xml.zip" responseTimeout="10000" doc:name="File" path="c:/output">
</file:outbound-endpoint>
</flow>
如果您对此有所了解,请告诉我们在所需的fileName中实现。提前谢谢。
答案 0 :(得分:1)
使用Regular Expression更改文件名。例如:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans" version="CE-3.6.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">
<flow name="stackoverflowplaygroundFlow">
<file:inbound-endpoint path="/tmp/mule/in"
responseTimeout="10000" doc:name="Inbox">
</file:inbound-endpoint>
<logger message="#[flowVars.originalFilename]" level="WARN"
doc:name="Logger" />
<gzip-compress-transformer />
<file:outbound-endpoint path="/tmp/mule/out"
outputPattern="#[regex('^(.*)\\.xml$', flowVars.originalFilename) + '.gz']"
responseTimeout="10000" doc:name="File" />
</flow>
</mule>
重要的一步是设置outputPattern
:
#[regex('^(.*)\\.xml$', flowVars.originalFilename) + '.gz']
它采用原始文件名,删除尾随.xml
,并添加.gz
。