快速(并且希望简单)问题:我需要触发下载由PHP文件生成的PDF文件。我可以这样做:
<a href="download.php">Download</a>
但我应该这样做吗?可能是Javascript?上面的工作,但窗口显示“正在加载...”,直到下载开始。我想向用户提供一些反馈意见。
想法?
注意:我已经有了从服务器发送文件的代码。它完美地运作。这个问题只是关于如何最好地从客户端调用该脚本。
某些网站会自动启动下载。他们是如何做到的?
直接URL的问题在于,如果PHP脚本出错,它将替换现有页面的内容,这不是我想要的。
答案 0 :(得分:13)
修改强>
是javascript,类似于:
<a href="download.php" onclick="this.innerHTML='Downloading..'; downloadPdf(this);">Download</a>
如果您需要真正了解下载何时开始,您可能需要调用iframe,然后在其上使用“onload”事件..例如:
// javascript
function downloadPdf(el) {
var iframe = document.createElement("iframe");
iframe.src = "download.php";
iframe.onload = function() {
// iframe has finished loading, download has started
el.innerHTML = "Download";
}
iframe.style.display = "none";
document.body.appendChild(iframe);
}
答案 1 :(得分:3)
您下载的解决方案很好。您可能需要考虑向用户提供一些视觉反馈,可能通过使用javascript在当前页面上显示“正在下载,请等待消息”,当通过onclick处理程序单击链接时。或者只是表明下载可能需要一些时间才能开始链接。由于IE将卸载页面,停止任何GIF动画,我更喜欢文件指示文件下载。
答案 2 :(得分:2)
通过使用onclick事件处理程序来显示旋转的gif
来伪造它<a href="download.php" onclick="ShowDownloading();">Download</a>
答案 3 :(得分:2)
自动启动下载通常在普通页面中使用元标记:
<META HTTP-EQUIV="REFRESH" CONTENT="10.0;URL=download.php">
此示例将在10秒内将浏览器重定向到download.php。