【问题标题】:Codeigniter Force download IECodeigniter 强制下载 IE
【发布时间】:2011-07-04 00:22:18
【问题描述】:

我在使用 ie 中的下载助手时遇到了问题。基本上我建立了一个网站,可以在两种情况下动态创建 pdf 发票和 pdf 证明,强制下载在 firefox、chrome 和 opera 中效果很好。在 IE 中它每次都失败,我收到以下错误: 无法从 mysite.com 下载 $filename

无法打开此 Internet 站点。请求的站点不可用或找不到。请稍后再试。

要开始 force_download,我有一个锚定目标 _blank,其 url 指向以下控制器:

        function view_uploaded_file($order = 0, $name = NULL){

        $this->load->helper('directory');

        $params['where'] = array('id' => id_clean($order));

        $data['order'] = $this->MOrders->get($params);

        if($data['order']->id < 1){

            redirect('admin/orders');

        }

        $name = db_clean(urldecode($name));

        $map = directory_map('./uploads/customer_order_uploads/'.$data['order']->user_id.'/'.$data['order']->id, 1);

        if(is_array($map) && in_array($name, $map)){

            $this->load->helper('download');

            $data = file_get_contents('./uploads/customer_order_uploads/'.$data['order']->user_id.'/'.$data['order']->id.'/'.urldecode($name));

            force_download($name, $data);

        } else {

            redirect('admin/orders');

        }

    }

最初我认为我的 IE 可能有问题,但我可以在其他网站上下载 PDF。然后我认为这可能是codeigniters下载帮助程序的问题,但我看到他们已经在帮助程序中为IE做了特殊的规定。

如果您有任何想法,请告诉我。谢谢。

【问题讨论】:

    标签: php pdf codeigniter force-download


    【解决方案1】:

    坦率地说,我不知道我们为什么要在代码点火器中使用帮助器来下载。

    用纯 php 做起来并不难:

    This Wonderful Question/Answer 概述了如何做得很好。

    真正要记住的是标题的content-disposition: attachment 部分。它告诉浏览器应该下载并保存文件而不是尝试在浏览器中显示它。

    所有浏览器的处理方式都不同,也许您的 IE 安装中有一些东西覆盖了该行为,但如果您按照链接文章中的说明进行操作,您应该在所有浏览器中正确下载文件。

    基本上我们需要告诉浏览器三件事:

    • 内容类型
    • 文件名
    • 如何处理传入的数据
    • (可选第四个,如果有的话)文件大小(内容长度)

    然后您只需将该数据直接转储到输出缓冲区。

    回应

    作为对您的回复的回应,在弹出窗口中不自动下载某些内容可能是一项安全功能,这可能是 IE 为解决之前的安全漏洞而引入的新功能之一。

    【讨论】:

      【解决方案2】:

      好吧,我至少找到了解决此问题的临时方法。我所有的强制下载链接都是目标 _blank..一旦我创建了标准的非弹出链接,文件下载就可以在 IE 中工作。可能有某种解决方法,但我也意识到无论如何都不需要弹出窗口来进行下载..下载对话框已经达到了这个目的。

      【讨论】:

      • 您应该清理此答案并将其标记为已接受的答案,以便将来遇到此问题的人知道您是如何解决的。
      猜你喜欢
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      相关资源
      最近更新 更多