强制在Javascript中下载文件

时间:2013-09-28 12:00:47

标签: javascript header download

我想创建一个强制下载文件的功能,客户端无需服务器帮助。 以下函数不起作用,并显示未定义标头的错误。 帮助将不胜感激。

function download() {

   var url = "C:\Koala.jpeg";
   var request = new XMLHttpRequest();
   header("Content-Type: application/force-download");
   header("Content-disposition: attachment; filename=url");
   header("Content-type: application/octet-stream");

       window.open(url, 'Download');
}

2 个答案:

答案 0 :(得分:1)

这种方式不可能实现。在您的JavaScript方式中,您告诉浏览器强制下载C:\ Koala.jpeg路径的文件。不仅如此,你还没有对请求对象做任何事情,据我所知,函数header()不存在。

这意味着浏览器必须从本地文件系统下载文件。从而为您的文件系统提供脚本访问权限。这是一个重大的安全问题,永远不会发生。

现在,如果您真正要做的是从远程服务器下载文件,则需要指示Web服务器使用标准方法下载文件以下载文件。虽然用户仍然可以取消下载,因为您(作为开发人员)无法强制用户在未经他们许可的情况下对其文件系统执行任何操作。

要从您的网络服务器下载文件,您需要了解您的环境,以便我们指出正确的方向。

干杯。

答案 1 :(得分:0)

这实际上是可能的,我提出的解决方案非常简单。在html中,一个标签,如果它有一个下载属性,它将下载该文件,而不是查看它。我们可以使用它并拥有一个带有download属性和hidden属性的标记,然后通过伪造点击它来激活它。以下代码段应下载猫图片。



document.getElementById('download').click();

<a id="download" href="https://docs.google.com/uc?id=0B0jH18Lft7ypSmRjdWg1c082Y2M" download hidden></a>
&#13;
&#13;
&#13;