展示ASP.NET页面并使用Response.WriteFile发送文件

3
我需要展示一个ASP.NET页面,上面有一条消息,类似于“您的下载即将开始...”,然后我需要使用Response.WriteFile(myfile)发送文件。问题是我将我的代码插入到Page_LoadComplete中,因为我认为ASP.NET会显示和呈现基本的HTML,然后在代码中有Response.WriteFile(strFullPath)。问题在于没有HTML被呈现出来,而文件正确传输!如何同时显示一个简单的HTML,比如“您的下载正在进行中”...? 谢谢
1个回答

3
我建议将 Response.WriteFile(struFullPath) 移到另一个页面,只负责写出文件。然后在您的页面上,提示“您的下载即将开始...”,使用这些方法之一来编写链接到执行 Response.WriteFile 的页面。 如果您不想点击方法链接,则方法有两种: 1. 将文件链接放入 iframe 中,它将立即下载; 2. 在您的页面上,添加一个隐藏的 iframe 元素并设置其 src 属性为文件地址,它将自动下载。
<iframe src="LINKTOTHEFILEPAGE"></iframe>

您可以使用一些 JavaScript 和备用的 meta refresh 标签。像平常一样加载您的 HTML 内容,并将其注入到<head>中。
<script>
     setTimeout(function(){window.location='LINKTOTHEFILEPAGE';}, 5000);
</script>
<noscript>
    <meta http-equiv="refresh" content="5; url=LINKTOTHEFILEPAGE">
</noscript>

这两个操作都会使下载延迟5秒钟。您可以根据需要进行调整。

1
谢谢您提供的链接。'Sourceforge' 模式是解决我的问题的好方法。 - stighy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接