2017-02-15 3 views
0

У меня есть метод, который пытается отправить файл xlsx (Excel 2007), который существует на сервере. Файл xlsx в порядке, я могу открыть его (локально) с сервера.Отправить двоичный файл (файл Excel) в браузер в CakePHP 3.3

Но когда файл загружен с клиентской стороны, он становится поврежденным. Вот метод:

public function exportToExcel() 
    { 
     $fileName = ROOT . '/files/xls' . DS . 'assessors.xlsx'; 

     $this->autoRender = false; 

     $assessors = $this->StaAssessors->find('all'); 

     $this->Utils->exportToExcel($fileName, $assessors); 

     $this->response->type('xlsx'); 

     $this->response->file($fileName, ['download' => true ]); 

     return($this->response); 
    } 

Я думаю, проблема в том, что файл Excel сжимается, и мой метод несколько не может работать правильно двоичный файл, который будет отправлен в браузер.

Ниже я прикреплял заголовки так, как они получены браузером.

enter image description here

Есть ли то, что я не хватает?

+0

Вам нужно будет отлаживать (и показывать результаты), без дополнительной информации, все, что могут сделать люди, это стрелять в темноте, что не очень полезно. Какие заголовки отправляются при запросе файла (проверьте сетевую консоль браузеров)? Как точно скачанный контент отличается от содержимого на сервере? – ndm

ответ

0

Он решил добавить ob_clean() перед возвратом ответа $ this->.

+1

Если это заставляет проблему уйти, вы просто скрываете фактическую проблему, а именно, что данные выводятся до отправки ответа в браузер. Вы должны попытаться выяснить, где это происходит, и устранить проблему в ее основе. – ndm

+0

спасибо за подсказку. Я продолжу расследование. – user1077915

Смежные вопросы