0

我正在尝试读取文件并使用 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 或网络上找不到任何东西,给出了一个使用 3.5 文档中推荐的 withFile() 函数的简单示例。我错过了什么?

4

1 回答 1

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常数指向什么!

也可以看看

于 2018-04-12T08:47:33.480 回答