Использование функции $this->response->withFile() в CakePHP 3.5 для возврата файла JPG
Я пытаюсь прочитать файл и вернуть его с контроллером в 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'.
Я не могу найти что-либо в Stackru или в Интернете, приводя простой пример этого с использованием функции withFile(), как рекомендовано в документации 3.5. Что мне не хватает?
1 ответ
Посмотрите документы еще раз, ваш код немного отличается:
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
постоянные указывает на!
Смотрите также