Intereting Posts
PHP fopen (): Имя файла не может быть пустой причиной getRealPath return false Проблема с заголовком заголовка PHP в Yahoo Small Business yii captcha не проверяет правильность Laravel 5 Entrust – пользователи принадлежат ко многим приложениям Проверка подлинности PHP с несколькими доменами и субдоменами Почему я не получаю ошибку «заголовки уже отправлены»? Разбить сложную строку запятыми в PHP Разбор Json-ответа с использованием PHP с пробелом в ключе массива Кэширование запросов MySQL Как установить параметр из нескольких параметров или массива с разными значениями в представлениях, выбранных в поле выбора, используя PHP Laravel vagrant не работает – Errno :: EADDRNOTAVAIL ToString () эквивалентно в PHP предотвращать прямой доступ к php Symfony 2 Security: продолжает перезагружать данные у поставщика услуг? Является ли это хорошей функцией пароля хеширования в PHP? Если нет, почему бы и нет?

Выход PHPExcel в браузер не работает в IE

У меня есть PHP-скрипт, который использует PHPExcel для открытия шаблона, вставки значений из запроса базы данных и возврата результата в браузер. Он отлично работает в Firefox, но в Internet Explorer (8), когда он пытается открыть файл, он ломается:

Internet Explorer не может загрузить generate.php из my.domain.

Internet Explorer не смог открыть этот интернет-сайт. Запрошенный сайт либо недоступен, либо не может быть найден. Пожалуйста, повторите попытку позже.

Код, который я использую ( generate.php ), выглядит следующим образом:

 // Open template $xlRead = PHPExcel_IOFactory::createReader('Excel5'); $xl = $xlRead->load('Template.xls'); $xl->setActiveSheetIndex(0); // Write data $xl->getActiveSheet()->fromArray($dbOutput, null, 'A1'); // Output to browser header('Last-Modified: '.gmdate('D, d MYH:i:s').' GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename=MyReport.xls'); $xlWrite = PHPExcel_IOFactory::createWriter($xl, 'Excel5'); $xlWrite->save('php://output') 

EDIT Похоже, эта проблема влияет только на IE, когда поддерживается SSL. Таким образом, это идентичная проблема для нескольких подобных вопросов SO. Народный совет – настроить заголовки, но до сих пор ни одна комбинация того, что я видел как решения, не работала …

Если ни одно из вышеперечисленных не работает для вас, и вы все равно хотите работать под SSL, вы всегда можете записать файл на диск и предоставить ссылку для загрузки, или вы можете запросить у пользователя адрес электронной почты и отправить файл по электронной почте в виде вложения , Если вы отправляетесь по электронной почте, PHPMailer имеет довольно простой способ отправки вложений. Я не уверен на 100%, но я думаю, что файл нужно записать на диск, прежде чем его можно будет подключить с помощью PHPMailer, но вы всегда можете отменить связь с файлом сразу после отправки.

Все сводится к обработке IE заголовков, которые вы установили. Собственный ответ Microsoft на эту известную проблему должен решить все для вас.

Резюме их решения: «удалить заголовок или заголовки без кеша».