【问题标题】:Kohana 3.2.0 cannot output an image correctlyKohana 3.2.0 无法正确输出图像
【发布时间】:2011-09-11 02:58:46
【问题描述】:

我已阅读线程output image in a Kohana 3.2 view,但代码在我的计算机上不起作用。

我编写了一个将图像输出到浏览器的操作 (如果我把超类改成Controller,还是不行。),代码是这样的:

class Controller_Portal extends Controller_Template {
    public function action_view() {
        $filename = "E:\workspace\myphoto.jpg";

        $this->response->headers('Content-Type', File::mime($filename))
            ->send_headers()  // If I remove this line, It still doesn't work
            ->body(file_get_contents($filename));

        exit;
    }
}

【问题讨论】:

    标签: php kohana


    【解决方案1】:

    在我在操作中添加$this->auto_render = FALSE; 并在最后删除exit; 后它可以工作。

    【讨论】:

    • 我已将您未注册的帐户合并到此帐户中,您现在可以接受此答案作为正确答案。
    【解决方案2】:

    你应该使用send_file()

    $this->response->send_file($filename, NULL, array('inline' => true));
    

    调用此方法后无法进行任何处理,发送文件时方法调用exit

    【讨论】:

      【解决方案3】:

      this SO question 中似乎有一个有效且可接受的答案,因此可能值得尝试那里使用的确切代码,看看它是否有效。

      唯一的区别似乎是删除了->send_header() 片段,但你永远不知道:)

      【讨论】:

      • 你好,我已经尝试删除->send_headers(),该操作仍然不起作用。
      • 很公平。我能建议的唯一另一件事就是快速回显File::mime($filename) 以确保它肯定获得了正确的文件。除此之外,交给更熟悉 Ko3.2 的人——我使用 3.0 和 2.3
      【解决方案4】:

      @atma: 发送文件完全正确,但是: 这并不完全正确。您当然可以在调用退出后进行任何处理。 有几种方法。首先可能是一个回调: register_shutdown_function() 另一种方法是创建一个“后处理类”, 它具有“函数__destruct()”,在调用退出后被调用。

      只要我的 2 美分 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        • 1970-01-01
        • 1970-01-01
        • 2015-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多