【发布时间】:2017-04-08 06:37:37
【问题描述】:
我已经按照 Cakes Cookbook 发送文件 (http://book.cakephp.org/3.0/en/controllers/request-response.html#sending-files),但我遇到了一个奇怪的问题。 PDF、DOC 和其他二进制文件工作得很好。但是当我尝试下载/显示图像(JPG 或 PNG)时,文件会自行损坏。
下载的文件未被识别为图像。它的大小与原始大小完全相同,但当我对其进行比较时,它们完全不同。
我在网上找不到类似蛋糕的东西,所以希望你能帮助我!
下面的代码是我的下载操作
public function arquivo($id) {
$file = $this->Arquivos->get( $id );
$this->response->file($file['filename'], ['download' => true]);
// Return response object to prevent controller from trying to render
// a view.
return $this->response;
}
响应标头:
接受范围:字节
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
连接:保持活动
内容长度:121000
内容类型:图片/jpeg
日期:格林威治标准时间 2016 年 11 月 24 日星期四 16:17:49
到期时间:1981 年 11 月 19 日星期四 08:52:00 GMT
保持活动状态:超时=5,最大值=100
Pragma:no-cache
服务器:Apache/2.4.10 (Ubuntu)
【问题讨论】:
-
你检查
$file['filename']是你文件的完整路径吗? -
是的,我记录了它,它是正确的。此外,它确实会发送具有相同大小和名称的文件。而且,正如我所说,pdf 文件确实有效
-
您应该调试图像的文件 MIME 类型。
-
谢谢@SumonSarker!我在我的问题中添加了响应标题。他们表现出不寻常的东西吗? (对不起,我不熟悉这些参数)
-
文件 MIME/内容类型对于了解正确的文件类型非常重要。如果此类型以某种方式更改或不正确,则文件将损坏。
标签: php cakephp download cakephp-3.x sendfile