Kohana 3.2响应:: send_file似乎对我不利

时间:2012-06-16 09:39:25

标签: kohana kohana-3 kohana-3.2

我正在尝试将文件发送到浏览器进行下载,并且在控制器中使用$this->response->send_file($file_path);没有运气。

我收到以下错误:

ErrorException [ Warning ]: finfo::file() [<a href='finfo.file'>finfo.file</a>]: Empty filename or path

$ file_path可以是绝对路径,也可以是相对路径,但我仍然得到相同的错误。在查看了这个实现的Kohana代码后,我无法弄清楚它应该如何工作。

以下代码将显示如何将基本文件名(例如,filename.ext)传递到File :: mime() - 这是错误的

https://github.com/kohana/core/blob/3.2/develop/classes/kohana/response.php#L434-453

// Get the complete file path
$filename = realpath($filename);

if (empty($download))
{
    // Use the file name as the download file name
    $download = pathinfo($filename, PATHINFO_BASENAME);
}

// Get the file size
$size = filesize($filename);

if ( ! isset($mime))
{
    // Get the mime type
    // HERE'S THE ISSUE!!!
    $mime = File::mime($download);
}

File::mime期望文件路径是文件系统上的绝对路径或相对路径,但$ download将只是一个基本文件名(例如filename.ext);

现在唯一适用于我的解决方案是更改send_file()方法'classes / kohana / response.php'中的代码

来自File::mime($download);

$mime = File::mime($filename);

Kohana 3.3已将此实施更改为:

$mime = File::mime_by_ext(pathinfo($download, PATHINFO_EXTENSION));

如果没有此修复,基本上send_file在3.2中不起作用。这是一个错误,或者我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

我正在使用并链接到3.2 develop分支。 3.2 master分支中不存在此问题。

对于有兴趣的人,请按照此拉取请求进行讨论,以查看最终修复:https://github.com/kohana/core/pull/183