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