繁体   English   中英

通过Ajax或Javascript强制下载文件

[英]Force a File Download by either Ajax or Javascript

所以我有一个列出文件的表,每个文件的URL作为数据属性存储在按钮上。 单击一个按钮后,我想触发一个Javascript / Ajax调用,该调用会将文件下载到URL。

现在有一些警告,

  1. 您需要通过下载对话框来下载文件,或者只需将其添加到浏览器下载中即可。
  2. 该请求必须能够采用标头,因为这是跨域请求。
  3. 这需要在主要浏览器(IE,Chrome,Firefox,Safari)上运行

到目前为止,我已经尝试使用XMLHttpRequest:

e.preventDefault();
var csrftoken = getCookie('csrftoken');
var req = new XMLHttpRequest;
req.open("POST",$(this).data("url"));
req.setRequestHeader("MY HEADER", "HEADER VALUE;");
req.withCredentials = true;
req.send();

我还尝试了Ajax GET请求(不会强制下载),并在锚标记(不接受标头)上使用Download属性。

谢谢

而不是使用不兼容跨浏览器的锚标记(显然,我没有意识到微软在获得HTML5规范方面是如此缓慢。。

我们可以利用iframe避免重定向,并在保持跨浏览器兼容性的同时达到这种效果。

<iframe width="1" height="1" frameborder="0" src="[File location]"></iframe>

只要该文件不是.html或可以通过浏览器显示的某种文件(.htm,.html,.xhtml,.aspx等),它都应该下载该文件。

您必须先捕获URL,然后再捕获:

document.location = 'data:Application/octet-stream,' + encodeURIComponent("http://somedomain.com/somefile.some");

要么

window.open("http://somedomain.com/somefile.some");

您不需要使用这种方法的标题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM