2011-11-09 54 views
2

感謝您的提示和Ben Nadel的QueryToCSV解決方案,我現在可以從我的查詢中生成CSV文件。不過,我想讓用戶選擇保存生成文件的位置。該文件指出:Coldfusion - 允許用戶選擇保存生成的csv文件的位置

下面的標籤可以迫使大多數瀏覽器顯示,要求用戶 是否要保存使用文件名cfcontent標籤 指定的文件由filename指定內容的對話框值。如果用戶選擇打開 該文件,則大多數瀏覽器在相關應用程序中打開文件,而不是瀏覽器 窗口。

<cfheader name="Content-Disposition" value="attachment; filename=filename.ext"> 

這適用於PDF文件,但我不能使它與CSV文件。目前,我第一次寫文件到一個臨時文件,然後調用cfcontent,然後cfheader:

<cffile 
    action="WRITE" 
    file="#filename#" 
    output="#CSVString#" 
/> 

<cfcontent file="#filename#" type="text/plain" > 
<cfheader name="Content-Disposition" value="attachment; filename=#filename#"> 

這個工程將文件寫入到臨時目錄,然後在瀏覽器窗口;但我無法弄清楚如何讓用戶選擇保存位置。

回答

3

嘗試text/csv而不是text/plain爲您的內容類型?

瀏覽器將假設純文本可以/應該顯示在屏幕上,而他們(應該)詢問用戶如何處理CSV數據。

+0

D'oh - 不知道這是一個選項 - ColdFusion Builder沒有列出它,並沒有在文檔中看到它。這確實給了我一個提示,但我無法選擇保存位置或命名文件 - 我的選項是「用[選擇]打開」,「保存文件」和「取消」。沒有其他選擇。 – earachefl

+1

這是一個瀏覽器設置 - 您需要找到與下載相關的選項,並將其設置爲「每次詢問我」(或類似),然後使用「保存文件」選項可讓您執行此操作。 –

+0

啊,我腦部凍結了。知道可用的MIME類型(而不是依賴於CF生成器)證明是有幫助的:http://www.iana.org/assignments/media-types/text/index.html – earachefl

2

翻轉他們身邊:

<cfheader name="Content-Disposition" value="attachment; filename=#filename#"> 
<cfcontent file="#filename#" type="text/plain"> 

此外,根據上面的代碼,你不希望使用完全相同在這兩個地方的##文件名變量,因爲##文件名是你的輸出目的地的<CFFILE>標籤,這意味着一個絕對完整的路徑(即C:\ temp \ mycsvfile.csv),然而,這是而不是你想要在你的Content-Disposition頭 - 你想要文件名本身......'mycsvfile .csv格式。你可能想爲這個想出第二個變量。

+0

好的,謝謝,明白了。該文件仍然保存到Downloads文件夾中 - 是否無法更改保存位置? – earachefl

+0

這取決於您的瀏覽器設置,而不是cf代碼。 – Leigh

相關問題