ColdFusion:强制浏览器下载文件并仍然加载页面

时间:2012-10-12 12:05:37

标签: coldfusion http-headers mime-types attachment

我有test.cfm我动态构建pdf文件并将其与<cfheader><cfcontent>一起输出到浏览器,但我仍然希望页面加载并显示“test HTML“:

<CFFILE action="readbinary" file="#expandpath("./test.cfm")#" variable="testcontent" />
<CFHEADER name="Content-Disposition" value="attachment; filename=""test.txt""; charset=utf-8">
<CFCONTENT type="text/plain" reset="yes" variable="#testcontent#">

<CFCONTENT type="text/html" reset="yes" /><!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Testdoc</title>
</head>
<body>test html</body>
</html>

(输出文件本身仅用于示例)

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

您无法触发下载后发生的情况,但您可以反过来执行此操作 - 加载所需的页面,然后使用HTML元重定向重定向到要下载的文件:

<meta http-equiv="refresh" content="5; url=http://domain.com/path/to/download" />

(如有必要,您可以使用cfhtmlhead将其插入现有HTML网页的相关部分。)

5是等待的秒数 - 设置为0将立即重定向。 (当与其他页面一起使用时,使用即时重定向可能会导致后退按钮出现问题;但是对于下载来说应该不会出现问题。)