2017-04-11 74 views
1

我有一個用例,我需要在流的中間從目錄中選擇一個特定的文件。 我嘗試使用下面的代碼,但它沒有成功。騾流中拾取一個特定的文件

解決方法,我想的,是檢索的所有文件,循環,被挑選的文件相匹配。

有沒有其他方法可以做到這一點?

感謝, 拉吉

+0

<文件:端點路徑= 「FILE_PATH」 連接器-REF = 「文件」 \t \t名稱= 「fileEndpoint」 responseTimeout = 「10000」 DOC:名稱= 「文件」> \t \t <文件:文件名-regex-過濾模式=「#[flowVars.fileNameTobePickedUp] .txt」caseSensitive =「true」/> user7326853

回答

0

你可以用騾子請求者拿起文件

0

感謝亞歷克斯的響應。我正在使用Mule Requester來提取文件。我的問題是拿起一個特定的文件。

例如, FILE1.TXT FILE2.TXT file3.txt file4.txt

過程中流動的中間運行,例如說我要挑FILE2.TXT。使用正則表達式過濾器模式,我得到的文件列表。只是檢查有一種方法來選擇特定的文件,通過設置它在flowVars並將其傳遞給Mule請求者或任何其他連接器。

感謝, 拉吉

0

有許多的方法可以在流動的中間讀取的文件。
例如,使用Groovy腳本: -

<set-variable variableName="fileName" value="D:/temp/test2.txt" doc:name="Variable"/> 
<scripting:component doc:name="GetFile">           
    <scripting:script engine="Groovy"><![CDATA[new File(flowVars.fileName).getText('UTF-8')]]></scripting:script> 
</scripting:component> 

或者使用Spring豆: -

<spring:bean id="myResource" class="org.apache.commons.io.IOUtils" factory-method="toString"> 
    <spring:constructor-arg value="file:///D:/temp/file2.txt" type="java.io.InputStream"/> 
</spring:bean> 

,然後在流動的中間讀它:

<set-payload value="#[app.registry.myResource]" doc:name="Set Payload"/> 

第三條道路:您還可以使用以下命令讀取中間的文件: -

<set-variable variableName="fileName" value="file:///D:/temp/file2.txt" doc:name="Variable"/> 
    <scripting:component doc:name="Script"> 
    <scripting:script engine="groovy"><![CDATA[ 
     muleContext.client.request(flowVars.fileName, eventContext.timeout) 
     ]]></scripting:script> 
</scripting:component> 

選擇是你的:)

0

您可以使用mule請求者在流程中選擇文件。

+0

您好薩特雅先生,這個答案已經給出了,所以又寫了同樣的答案,沒有任何意義?在發佈答案之前請檢查指南。請給出一個替代的建議,增加這個問題的價值 –

0

您可以通過將文件連接器流分離到另一個流並從父流中引用它來解決此問題。當您分開文件連接器流量時,請記住將入站端點設置爲

file connector 

作爲入站端點。因此,只要您的父流(可能是HTTP入站端點)接收到請求,您也可以訪問它。此外,如果您希望文件路徑由HTTP端點提供,那麼您可以定義流變量並將文件路徑存儲在其中。