Javascript下载链接

Javascript下载链接,javascript,hyperlink,download,save,Javascript,Hyperlink,Download,Save,有没有办法创建一个链接,用户无需右键单击并选择“将链接的文件另存为”即可下载文件?您是否需要PHP来执行此操作,或者只能使用Javascript执行此操作?标识文件下载的HTTP响应头由服务器发送,因此无法使用Javascript发送。您可能需要一些服务器端代码行来设置正确的标题(如PHP的header()函数)。下面是一些示例,说明如何使用JavaScript来实现,但它只在IE中起作用 <html> <head> <title>xbs_saveas_gt&

有没有办法创建一个链接,用户无需右键单击并选择“将链接的文件另存为”即可下载文件?您是否需要PHP来执行此操作,或者只能使用Javascript执行此操作?

标识文件下载的HTTP响应头由服务器发送,因此无法使用Javascript发送。您可能需要一些服务器端代码行来设置正确的标题(如PHP的
header()
函数)。

下面是一些示例,说明如何使用JavaScript来实现,但它只在IE中起作用

<html>
<head>
<title>xbs_saveas_gt</title>
<script type="text/javascript">
function go_saveas() {
    if (!!window.ActiveXObject) {
        document.execCommand("SaveAs");
    } else if (!!window.netscape) {
        var r=document.createRange();
        r.setStartBefore(document.getElementsByTagName("head")[0]);
        var oscript=r.createContextualFragment('<script id="scriptid" type="application/x-javascript" src="chrome://global/content/contentAreaUtils.js"><\/script>');
        document.body.appendChild(oscript);
        r=null;
        try {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            saveDocument(document);
        } catch (e) {
            //no further notice as user explicitly denied the privilege
        } finally {
            var oscript=document.getElementById("scriptid");    //re-defined
            oscript.parentNode.removeChild(oscript);
        }
    }
}
</script>
</head>
<body>
<a href="#" onclick="go_saveas();return false">save the document</a><br />
</body>
</html> 

xbs_saveas_gt
函数go_saveas(){
如果(!!window.ActiveXObject){
document.execCommand(“SaveAs”);
}else if(!!window.netscape){
var r=document.createRange();
r、 setStartBefore(document.getElementsByTagName(“head”)[0]);
var oscript=r.createContextualFragment(“”);
文件.正文.附件(oscript);
r=null;
试一试{
netscape.security.privilegmanager.enablePrivilege(“UniversalXPConnect”);
保存文档(文档);
}捕获(e){
//没有进一步通知,因为用户明确拒绝了该权限
}最后{
var oscript=document.getElementById(“scriptid”);//重新定义
parentNode.removeChild(oscript);
}
}
}


或者只需执行
document.print()
并将其保存为PDF文件

您可以使用php和header函数解决此问题,如下所示:

<?php
$fileToOpen = "document.txt"; // the file that you want to download
header("Content-disposition: attachment; filename=$fileToOpen");
header("text/plain"); // Depending on the file
echo file_get_contents($fileToOpen);
简单PHP:

<?php
    header("Content-type: application/octet-stream");
    header("Location:filenamegoeshere.txt");
    header("Pragma: no-cache");
    header("Expires: 0");
?>