У меня проблема с возвратом веб-сервиса, заголовок выглядит так:
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'.$this->filename.".csv".'"');
Я собираю данные и просто возвращаю их вот так:
foreach($this->output_data as $each_table) {
foreach($each_table as $each_row) {
foreach($each_row as $each_key => $each_value){
$string .= Sanitize::escape($each_value).$this->delimiter;
}
$string .= "\n";
}
}
print($string);
Я ожидаю возвращения csv-файла в виде потока. Но возвращаемся " HTML-документ Firefox ". Я этого не понимаю.
Я уже отключил рендеринг вида в контроллере. Что я могу сделать?
1 ответ
Неправильно просто выводить некоторые форматированные строки из контроллера или модели. Я обнаружил, что нужно использовать Response-Class. Код ниже:
$this->response->header(array( 'Content-Disposition: attachment; filename="<filename.ext>"));
$this->response->type('application/text-csv');
$this->response->body(<returnData>);
Обязательно используйте правильный «тип».
Похожие вопросы
Новые вопросы
php
PHP — это широко используемый язык сценариев общего назначения с открытым исходным кодом, мультипарадигмальный, динамически типизированный и интерпретируемый, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.