javascript - 触发文件下载的正确方法(在 PHP 中)?

标签 javascript html download

快速(希望简单)的问题:我需要触发下载由 PHP 文件生成的 PDF 文件。我可以这样做:

<a href="download.php">Download</a>

但是我应该换一种方式吗?也许是Javascript?以上工作正常,但窗口显示“正在加载...”,直到下载开始。我想向用户提供一些正在发生的事情的反馈。

想法?

注意:我已经有了从服务器发送文件的代码。它工作得很好。这个问题只是关于如何最好地从客户端调用该脚本。

一些网站有自动开始的下载。他们是怎么做到的?

直接 URL 的问题在于,如果 PHP 脚本出错,它将替换现有页面的内容,这不是我想要的。

最佳答案

编辑

是 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);
}

关于javascript - 触发文件下载的正确方法(在 PHP 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/445774/

相关文章:

javascript - 存储/导入变量和函数处理(JS)

html - Wired 杂志是如何实现这种粗下划线链接效果的?

c# - 在仍在下载的同时播放媒体文件(Windows Phone)

javascript - 如何隐藏多个元素

javascript - 使用 URLSearchParams 删除 URL 参数

javascript - 'as' 语句 Angular 2 +/javascript

html - Facebook 插件社交,iframe 不适应其父级的宽度

java - 下载图片会覆盖上一张图片

node.js - 如何提供使用 fs.readFile 读取的文件

javascript - 将函数对象引用作为序列化 json 传递