Coldfusion - 允许用户选择保存生成的csv文件的位置

时间:2011-11-09 21:01:45

标签: coldfusion file-storage

感谢您的提示和Ben Nadel的QueryToCSV解决方案,我现在能够从查询中生成CSV文件。但是,我想允许用户选择保存生成文件的位置。文档说明:

  

以下标记可以强制大多数浏览器显示询问用户的对话框       是否要保存cfcontent标记指定的文件的内容       使用文件名值指定的文件名。如果用户选择打开       该文件,大多数浏览器在相关应用程序中打开文件,而不是浏览器       窗口。

<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#">

这可以将文件写入临时目录,然后写入浏览器窗口;但我无法弄清楚如何让用户选择保存的位置。

2 个答案:

答案 0 :(得分:3)

对于您的内容类型,请尝试text/csv而不是text/plain

浏览器会假设可以/应该在屏幕上显示纯文本,而他们(应该)询问用户如何处理CSV数据。

答案 1 :(得分:2)

翻转它们:

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

另外,根据您上面的代码,您不希望在两个地方都使用#filename变量,因为#filename#是您<CFFILE>标记的输出目的地,这意味着绝对满路径(即C:\ temp \ mycsvfile.csv),但是,你想要的Content-Disposition标题 - 你想要文件名本身......'mycsvfile.csv' 。您可能想要为此提出第二个变量。