【问题标题】:How can i force browser(ie7) to load file from request?我如何强制浏览器(ie7)从请求中加载文件?
【发布时间】:2020-03-12 09:53:19
【问题描述】:

我遇到了 ie7 不支持 blob 数据类型的问题。
现在我不能强制浏览器(ie7)加载我通过获取请求从服务器传递的文件。
现代浏览器(chrome,firefox)用这个js代码做得很好

        var xhr = new XMLHttpRequest();
        xhr.open('GET', COEFF_CONTROL_GET_CSV_FILE_URL + "&" + "DWL_PERIOD=2019&DWL_MR=37", true);
        xhr.onreadystatechange = function(){
            if(xhr.readyState == 4 && xhr.status == 200){
               //Code below implements file load
                var contentDisposition = xhr.getResponseHeader('content-disposition');
                var filename = contentDisposition.split("filename=")[1].split(";")[0];

                var blob = new Blob([xhr.response], {type: 'text/csv'});
                var link = document.createElement('a');
                link.href = window.URL.createObjectURL(blob);
                link.download = filename;

                document.body.appendChild(link);
                link.click();                    
            }
        }

我现在通过服务器的请求传递的标头

header("Content-Type", "text/csv;charset=utf-8");
header("Content-Disposition", "attachment;filename=&mvFileName");

我已经试过了(但没有帮助)

将不胜感激所有可能的帮助!

【问题讨论】:

  • 是时候将 Internet Explorer 抛诸脑后了。它已经停产了一段时间。
  • 您只想点击链接并强制下载? Example #1
  • @StackSlave,不幸的是除了 ie7 什么都不能用(
  • @StackSlave 我想处理来自 srv 的请求,其中包含 csv 文件并将此文件加载到磁盘上
  • 在 ie7 中无法将文件本身保存到浏览器... FlieSystemFileEntry 根本不受 IE 支持。您可以使用XMLHttpRequest 将文件作为XMLHttpRequestInstance.responseText 获取,但这将是您必须解析的字符串。就个人而言,我会使用 JavaScript 将 XMLHttpRequest 发送到 PHP,然后使用 str_getcsv,得到的响应就像那个例子一样,除了你 echo json_encode($csv);

标签: javascript internet-explorer sas internet-explorer-7


【解决方案1】:

您使用的 IE 7 浏览器太旧且超出 Microsoft 的支持范围。

由于 IE 7 不支持 Blob,因此您的代码将不适用于 IE 7 版本。

我建议您使用最新的 Microsoft 浏览器。如果您无法使用最新的 Microsoft 浏览器,那么至少迁移到 IE 11 版本。从 IE 10 版本开始支持 Blob。

对于 IE 11 浏览器,我建议你使用 Navigator.msSaveBlob() 方法进行测试。

Navigator.msSaveBlob() 方法将文件或 Blob 保存到磁盘。此方法的行为方式与 Navigator.msSaveOrOpenBlob() 相同,只是它禁用了文件打开选项。

例子:

var blob = new Blob(["Sample String\r\n,For Checking, msSaveBlob"],{
    type:'text/csv;charset=utf-8;'
});

if(navigator.msSaveBlob){
    navigator.msSaveBlob(blob,"sample.csv");
}

参考资料:

  1. msSaveBlob

  2. msSaveBlob method

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-04
    • 2011-09-25
    • 2010-12-27
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2020-07-31
    相关资源
    最近更新 更多