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



我有一个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>

(输出文件本身仅供参考)

有没有办法做到这一点?

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新