Использование функции $ this- & gt; response- & gt; 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’.

Я не могу найти что-либо в StackOverflow или в Интернете, приводя простой пример этого с использованием функции withFile (), как рекомендовано в документации 3.5. Что мне не хватает?

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 постоянные указывает на!

Смотрите также

0

Другие решения

Других решений пока нет …