通过控制器获取图片和媒体等文件

时间:2013-12-12 19:52:06

标签: kohana kohana-3 kohana-3.3

我的网站上有以下链接 - http://mywebsite/multimedia/pronounciation/265.mp3 它让我绕过控制器的文件。但我想记录请求然后返回此文件。所以我创建了一个记录请求的控制器,然后重新路由到文件:

class Controller_GetSound extends Controller {

    public function action_index() {
        Request::factory('multimedia/pronounciation/265.mp3')
                ->method(Request::POST)
                ->post($this->request->post())
                ->execute();
    }
}

但它没有按预期工作。如何从控制器返回资源文件?

2 个答案:

答案 0 :(得分:2)

Kohana有一个send_file函数。该函数在分割大文件和发送正确的mime类型方面做得很好。

@see http://kohanaframework.org/3.3/guide-api/Response#send_file

您的代码应为:

class Controller_GetSound extends Controller {

    public function action_index() {

        $this->response->send_file('multimedia/pronounciation/265.mp3',TRUE,array(
            'mime_type' => 'audio/mpeg',
        ))
    }
}

您实际上并不需要设置mime_type。 Kohana将为您找到正确的mime_type。

答案 1 :(得分:1)

听起来你想要实现一个称为X-Sendfile的东西。我想?

控制器看起来像这样:

class Controller_GetSound extends Controller {

    public function action_index() {
        $this->response->headers(array(
            'Content-Type' => 'audio/mpeg'
            'X-Sendfile' => 'multimedia/pronounciation/265.mp3',
        );
    }
}