如何检测禁止下载的文件?

3
Internet Explorer有一个安全设置,允许启用/禁用文件下载。我们的应用程序中有一个按钮,可以使用window.open("fileurl")打开文件(例如.xls)。在JavaScript中是否有可能检测到下载被阻止(并显示一些说明)?或者更复杂的是,是否可以从请求头中检测到它?
编辑:我已经尝试了建议中的ajax来测试下载,但没有成功。我认为保存或打开文件被阻止而不是实际下载。
var xhr = new XMLHttpRequest();
xhr.open("GET", docurl, false);
xhr.send(null);
var data = new VBArray(xhr.responseBody).toArray();//IE9 only

它将成功执行并返回一个数组,无论下载是否被禁用,长度都相同。
使用XMLHttpRequest获取和发送二进制文件
如何在IE中从JavaScript访问XHR responseBody(用于二进制数据)?

编辑2:
我的第二次尝试:

var wnd = window.open()
wnd.load=tst;
wnd.location.href= docurl

我试图在on load事件中评估窗口(tst),但我没有发现下载是否被禁止的区别。
2个回答

3
这里有一个想法:通过ajax请求下载一个类似于被阻止的测试文件,具有相同的mime类型和真实的空文件(如果可能的话,但要小,可能只有2KB)。然后,如果此类下载失败,...你还可以检查它是如何失败的(静默、带错误消息等),这将为你提供更多关于如何解决问题的信息。

我认为你运气不好,因为现在似乎已经被阻止在页面上下文之外了,在操作系统上。当MIME类型是octect/stream时,这些文件是否被阻止? - Tei
我猜测可以被浏览器打开的文件(如.txt、图片等)是可以的,而其他文件则会被阻止。有人告诉我甚至.pdf也可以,但我没有成功确认。我不确定这是否受mime或扩展名的影响,但这并不重要,我只需要打开或下载它。 - IvanH

0

已经一个月了,没有答案,所以我得出结论:没有解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接