ВопросКак сохранить файл на компьютере клиента в запросе AJAX
Здравствуйте Евгений
В Drupal 7 нужно решить задачу. Взять данные из таблицы, выгрузить в файл Excel и сохранить файл Excel на компьютере клиента. Данные экспортирую в файл Exel библиотекой PHPExel. Библиотека сохраняет файл на сервере. После того как файл сформирован, его нужно скачать на машину клиента и удалить.
// Кнопка которая запускает процесс формирования файла $form['group_export_xls_submit'] = array('#type' => 'submit', '#value' => 'Экспорт в Exel', '#ajax' => array( 'callback' => 'ajax_group_export_xls_callback', ), ); function ajax_group_export_xls_callback ($form, &$form_state) { // Делаю запрос к базе данных ............................... // Формирую файл Exel ........................... // Сохраняю файл Exel на сервере $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('test.xls'); return array('#type' => 'ajax', '#commands' => $commands); }
Файл test.xls сформирован. Он лежит на сервере. Теперь нужно скачать его на машину клиента.
Руководство предлагает делать это так:
// Redirect output to a client web browser (Excel5) header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="test.xls"'); header('Cache-Control: max-age=0'); // Сохранить в файле $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit;
Внутри процедуры AJAX я не могу это сделать. Там формируются свои заголовки.
Как после выполнения запроса AJAX сразу запустить скрипт который читал бы сформированный файл на машину клиента ?
И как должен выглядеть этот скрипт ? Ведь страница с которой он выгружается не должна перегружаться
- Гость
- 17.07.2012
- 5204