尝试将 php 中的 tiff 文件发送到客户端,但下载后文件已损坏



我正在尝试使用 response->send_file(( 方法从 Kohana 框架版本 3.2 中的控制器发送 tiff 文件(我知道它有点旧(,文件在浏览器中下载并且大小还可以。 但是当我尝试查看它时,我收到一个错误,显示文件已损坏。我使用 ssh 下载相同的文件,我可以毫无问题地查看它。当我比较记事本++中的文件时,工作文件的编码是ANSI,但损坏的文件是utf-8-bom。这是我的控制器中方法的代码:

public function action_file() {
    $this->auto_render = false;
    $path = '/tmp/test.tiff'
    $this->response->send_file($path);
}

我阅读了Kohana send_file源代码,我看到它正在使用:

echo fread(...)

将文件发送到客户端。如何更改输出缓冲区上的编码,使文件采用 ANSI (Windows-1252( 格式?我试过了

mb_http_output('Windows-1252');
mb_internal_encoding('Windows-1252');

无成功

我在发送文件之前添加了ob_clean((,问题解决了。似乎在我的代码或框架BOM中的某个地方被添加到输出缓冲区并且文件已损坏

public function action_file() {
    $this->auto_render = false;
    $path = '/tmp/test.tiff';
    ob_clean();
    $this->response->send_file($path);
}

感谢 Zerkms 提到在十六进制编辑器中比较文件

最新更新