CakePHP 3 изображение скачать поврежден

Я следил за кулинарной Cakes для отправки файлов (http://book.cakephp.org/3.0/en/controllers/request-response.html#sending-files) но я столкнулся со странной проблемой.
PDF, DOC и другие двоичные файлы работают просто отлично. Но когда я пытаюсь загрузить / показать изображение (JPG или PNG), файл повреждается сам.

Загруженный файл не распознается как изображение. У него точно такой же размер, как и у оригинала, но когда я его различаю, они совершенно разные.

В интернете я не нашел ничего похожего на торт, поэтому надеюсь, вы мне поможете!

Приведенный ниже код является моим действием загрузки

 public function arquivo($id) {
$file = $this->Arquivos->get( $id );

$this->response->file($file['filename'], ['download' => true]);
// Return response object to prevent controller from trying to render
// a view.

return $this->response;
}

Заголовки ответа:

Accept-Диапазоны: байт

Cache-Control: нет хранилища, нет кэша, необходимо повторно проверить, пост-проверка = 0, предварительная проверка = 0

Connection: Keep-Alive

Content-Length: 121000

Content-Type: изображение / JPEG

Дата: чт, 24 ноября 2016 г. 16:17:49 GMT

Истекает: четверг, 19 ноября 1981 года, 08:52:00 по Гринвичу

Keep-Alive: тайм-аут = 5, максимум = 100

Pragma: нет кэша

Сервер: Apache / 2.4.10 (Ubuntu)

0

Решение

Проверьте путь к файлу и MIME Types правильно.

public function arquivo($id) {
$file = $this->Arquivos->get( $id );
$this->response->file(
$file['filename'], #Check $file['filename'] is full path of your download file
[
'download' => true,
'name' => 'Your_Download_File_Name_Here'
]
);
return $this->response;
}

Пример:

Ваш $file['filename'] переменная должна быть /path/to/your/file.jpg

Также проверьте правильность MIME TYPES от CakePHP 3 Отправка или загрузка файлов

0

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

У меня та же проблема с загрузкой файлов jpg и xlsx.

Мой код довольно прост:

public function download() {
$response = $this->response->withFile($template_file_path, ['download' => true]);
return $response;
}

По сравнению с 2 файлами (исходный файл И загруженный файл, который поврежден) с двоичным редактором, разница в 1 байт. Я не знаю почему, но 0x20 был добавлен в верхней части файла.

0

По вопросам рекламы [email protected]