Coldfusion - позволяет пользователю выбрать, где сохранить сгенерированный CSV-файл - PullRequest
2 голосов
/ 10 ноября 2011

Благодаря вашим советам и решению 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 ]

3 голосов
/ 10 ноября 2011

Попробуйте text/csv вместо text/plain для вашего типа контента?

Браузеры предполагают, что простой текст может / должен отображаться на экране, тогда как они (должны) спрашивать пользователя, что делать для CSVданные.

2 голосов
/ 10 ноября 2011

Переверните их:

<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'.Вы можете придумать для этого 2-ю переменную.

...