0

我目前正在为客户构建一个 Web 应用程序。而且我无法使用原始 IE8 下载 xlsx 文件。而它适用于 IE9 的 IE8 兼容模式。

我正在使用 symfony 1.4,php 5.2.6。xslx 文件有效。

我的代码:

$this->getResponse()->clearHttpHeaders();
    $this->getResponse()->setHttpHeader('Pragma: public'); 
    $this->getResponse()->setContentType('application/force-download');
    $this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename="Export_Excel.xlsx"');
    $this->getResponse()->setHttpHeader('Content-Transfer-Encoding', 'binary');
    $this->getResponse()->setHttpHeader('Connection', 'close');
    $this->getResponse()->setContent($fileData);
    $this->getResponse()->sendHttpHeaders();
    $this->getResponse()->send();

IE 8 说不能下载,因为他没有找到该网站或没有响应,稍后再试。这不是 url 问题,因为我可以显示具有相同 ulr 的空白页面。

此外,这段代码

        session_write_close();
        $this->getResponse()->clearHttpHeaders();
        $this->getResponse()->setHttpHeader('Pragma: public'); 
        $this->getResponse()->setContentType('application/force-download');
        $this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename="Export_Excel.xlsx"');
        $this->getResponse()->setHttpHeader('Content-Transfer-Encoding', 'binary');
        $this->getResponse()->setHttpHeader('Connection', 'close');

      @ob_end_clean();
    flush();


    @readfile(sfConfig::get('sf_web_dir').'/'.$filename.'.xlsx');
  throw new sfStopException();

然后将 xslx 文件下载为 zip 文件。注意 session_write_close(); 因为没有它,上面的代码就无法工作。

有任何想法吗 ?

我希望能够将我的文件下载为 xslx 文件。(不必重命名)。第一束代码适用于 chrome、firefox、IE 9、IE9 compat IE 8、IE9 compat IE7。但不是IE8。

更新 2:

所以问题确实出在下载部分。我的老板告诉我用 csv 临时替换 xlsx,我在下载文件时遇到了同样的问题。

那么有什么想法可以使文件下载适用于 IE8 吗?

4

1 回答 1

0

我找到了解决方案。这很容易理解,但很难找到。

我的下载是由带有 window.open 的 javascript 调用的,就像工作中的 pdf 导出一样。但是在新窗口的情况下,IE8会忽略强制下载并尝试显示。所以它适用于pdf。但是由于不可显示的扩展而崩溃。

所以解决方案是使用简单的链接或 window.location.href =,当您需要提供动态参数时,就像我的情况一样。

于 2012-11-12T14:49:11.287 回答