我的网站上有以下链接 - 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();
}
}
但它没有按预期工作。如何从控制器返回资源文件?
答案 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',
);
}
}