使用文件命名约定压缩Mule中的文件(gz)不能按预期工作

时间:2015-08-19 02:51:17

标签: mule mule-studio mule-component mule-el

我正在从文件组件中读取文件,示例文件名为TestCustomer.xml。我需要压缩文件(ZIP格式)并将其放在名为TestCustomer.zip的文件组件上。在仅提取文件时,它应在外部反映为TestCustomer.xml

我尝试过多种方式,但它没有按预期的出站文件夹outputPattern工作。

  1. 文件模式为' TestCustomer.xml.zip' - 响应为' TestCustomer.xml.zip' (但预计应该是TestCustomer.zip)
  2. 试图' TestCustomer.zip' - 响应为' TestCustomer.zip' (但是当我提取它时,它的文件格式不是xml格式)。
  3. 尝试为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>
    
  4. 如果您对此有所了解,请告诉我们在所需的fileName中实现。提前谢谢。

1 个答案:

答案 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