假设我的网站上有文件的下载链接。
单击这些链接时,将向服务器发送一个AJAX请求,服务器将返回带有文件位置的URL。
我想要做的是,当响应返回时,让浏览器下载文件。有没有一种便携的方法可以做到这一点?
发布于 2013-04-06 07:43:37
尝试这个库https://github.com/PixelsCommander/Download-File-JS它比前面描述的所有解决方案都更现代,因为它使用了"download“属性和方法组合来带来最好的体验。
在此解释- http://pixelscommander.com/en/javascript/javascript-file-downliading-ignore-content-type/
这似乎是在JavaScript中开始下载的理想代码。
发布于 2011-01-10 20:45:00
我们这样做:首先添加这个脚本。
<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‘。将path作为get参数。我们认为这是最好的解决方案!
应该注意的是,此解决方案的PHP部分是一个简单的演示,可能非常不安全。它允许用户下载任何文件,而不仅仅是一个预定义的文件集。这意味着他们可以下载网站本身的部分源代码,可能包含API凭证等。
发布于 2008-12-13 23:20:14
只需从javascript调用window.location.href = new_url
,它就会将浏览器重定向到用户在地址栏中键入该地址
https://stackoverflow.com/questions/365777
复制相似问题