我尝试读取文件并使用CakePHP 3.5中的控制器将其返回,并且我没有太多运气。
我有一个快速测试文件,位于/ webroot目录中,具有777权限,我尝试使用以下代码返回它:
public function thumbnail( $order_id = null, $image_id = null ) {
$this->response->withFile( $order_id.'-'.$image_id.'.jpg' );
return $this->response;
}
当我点击那个控制器时(即/ orders / thumbnail / KC9BW0 / 1)我在浏览器中返回的是一个零字节页面,其中包含&text; / html'类型。
我无法在StackOverflow或Web上找到任何内容,一般使用3.5文档中建议的withFile()函数给出一个简单的例子。我错过了什么?
答案 0 :(得分:0)
再次查看文档,您的代码略有不同:
public function sendFile($id) { $file = $this->Attachments->getFile($id); $response = $this->response->withFile($file['path']); // Return the response to prevent controller from trying to render // a view. return $response; }
如上例所示,您必须将文件路径传递给方法。 [...]
响应对象是不可变的,你没有重新分配对象,因此你返回一个未经修改的响应对象,并且如评论中所述,你应该传递路径,绝对路径,而不是只是一个文件名,否则文件将在APP
常量指向的任何地方查找!
另见