一尘不染

使用JavaScript开始下载文件

javascript

假设我的网站上有文件下载链接。

单击这些链接后,会将AJAX请求发送到服务器,该请求返回带有文件位置的URL。

我想做的是指示响应返回时,浏览器直接下载文件。有便携式的方法吗?


阅读 391

收藏
2020-05-01

共1个答案

一尘不染

我们这样做:首先添加此脚本。

<script type="text/javascript">
function populateIframe(id,path) 
{
    var ifrm = document.getElementById(id);
    ifrm.src = "download.php?path="+path;
}
</script>

将其放置在您想要下载按钮的位置(此处我们仅使用链接):

<iframe id="frame1" style="display:none"></iframe>
<a href="javascript:populateIframe('frame1','<?php echo $path; ?>')">download</a>

文件“ download.php”(需要放在您的服务器上)仅包含:

<?php 
   header("Content-Type: application/octet-stream");
   header("Content-Disposition: attachment; filename=".$_GET['path']);
   readfile($_GET['path']);
?>

因此,当您单击链接时,隐藏的iframe就会获取/打开源文件“ download.php”。以路径作为get参数。我们认为这是最好的解决方案!

应该注意的是,该解决方案的PHP部分只是一个简单的演示,可能非常非常不安全。它允许用户下载任何文件,而不仅仅是预定义的文件。这意味着他们可以下载网站本身的部分源代码,其中可能包含API凭据等。

2020-05-01