Простой способ сохранить файл по нажатию кнопки на странице (HTML)
Задача: по нажатию кнопки на странице, чтоб вызывался диалог сохранения файла и собственно сохранялся произвольный файл с сервера.
Решение:
В коде html страницы упоминаем скрытую форму:
1 2 3 |
<form method="post" action="inc/csvExport.php"> <input type="hidden" name="csvBuffer" id="csvBuffer" value="" /> </form> |
Добавляем туда же обработчик нажатия вида:
1 2 3 4 5 6 7 |
$("#viewwork").click(function(){ document.forms[0].method='POST'; document.forms[0].action=save_file.php; document.forms[0].target='_self'; document.forms[0].submit(); return false; }); |
Ну код на сервере для:
save_file.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php // Данный код создан и распространяется по лицензии GPL v3 // Изначальный автор данного кода - Грибов Павел // http://грибовы.рф $ex= "1;2;3;4;5;6;7"; header("Content-type: application/msexcel"); header("Accept-Ranges: bytes"); header("Content-Length: " . strlen($ex)); header("Content-Disposition: attachment; filename=rep_by_addr.csv"); ?> |
csvExport.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php // Данный код создан и распространяется по лицензии GPL v3 // Изначальный автор данного кода - Грибов Павел // http://грибовы.рф header('Content-type: application/vnd.ms-excel'); if (isset($_GET["csv"])==true){ header("Content-Disposition: attachment; filename=file.csv"); } else { header("Content-Disposition: attachment; filename=file.xls"); }; header("Pragma: no-cache"); $buffer = $_POST['csvBuffer']; try{ echo $buffer; }catch(Exception $e){ } ?> |