2012-03-06 31 views
-1

我通過CFINVOKE如何在Coldfusion中保存用戶計算機中的xml?

<cfinvoke 
    method="getUsers" 
    returnvariable="rawXMLUserList" 
    webservice="http://www.xyz.com/getusers.cfc?wsdl" 
> 
    <cfinvokeargument name="userid" value="123"> 
</cfinvoke> 

調用ColdFusion的互聯網服務和我存儲XML returnvariable到userList變量

<cfset userList = XmlParse(rawXMLUserLis)><br/> 

如何保存abc.xml用戶的計算機上,使用CFFILE它在服務器上的節約計算機,我必須將其保存在調用此「getUsers」方法的用戶計算機上。
謝謝
Kishor

+2

您不能強制用戶保存它。最多你可以強制用戶選擇下載@James Buckingham的答案如下。 – 2012-03-06 15:30:33

+0

用戶需要將該文件作爲瀏覽器下載,然後他們可以選擇將其保存在本地: - http://www.coldfusioncookbook.com/entry/39/How-do-I-force-a-file下載代替IE在線顯示-Firefox-and-other-browsers – 2012-03-06 15:05:05

+0

您不指定在xml文件位於用戶計算機上後需要做什麼。你(網站維護者)是否需要繼續直接訪問該文件,還是希望最終用戶能夠直接訪問?如果是前者,選擇的答案將不會輕鬆工作,因爲用戶需要訪問時負責重新上傳。作爲替代,您可以將XML存儲在瀏覽器的localStorage容器中,該容器可以將其保存在他們的機器上,但可以直接保存它。如果這是你想要的,讓我知道,我可以提供一個更完整的例子。 – 2012-03-07 19:39:05

回答

2

當您運行XMLParse()時,您將它轉換爲CF XML文檔對象。輸出時需要使用ColdFusion的toString(xmlObject)函數。

<cfheader name="content-disposition" value="attachment;filename=abc.xml"> 
<cfcontent type="application/xml;charset=utf-8" reset="true"> 
<cfoutput>#toString(userList)#</cfoutput> 

另一種方法是將文件寫入到web目錄(CFFILE動作=寫),然後cflocation用戶到該文件。

+0

..如果你沒有在其他地方使用'#userList#',你可以完全跳過'XMLParse'並返回原始的xml字符串。 – Leigh 2012-03-06 20:32:43

0

您需要告訴用戶的瀏覽器下載文件,而不是顯示它。通常與這樣的(未測試):

<cfheader name="content-disposition" value="attachment;filename=abc.xml"> 
<cfcontent type="application/xml;charset=utf-8" reset="true"> 
<cfoutput>#userList#</cfoutput> 

cfheader生成定製HTTP頭。

cfcontent設置頁面的MIME內容編碼標題。

+0

感謝Al Everett – Kishor 2012-03-07 12:58:59

相關問題