Добавление конвертируемого файла в форму PHP
Путем длительного поиска и усилий удалось найти решение как сохранить таблицу HTML. Удалось это реализовать с помощью скрипта, который сохраняет таблицу в exel и все вроде ок, но .. все никак не удается найти рабочее решение, чтобы при нажатии на кнопку, активировалось действие скрипта 1(который выполняет функцию конвертации таблицы HTML в Exel), при этом конвертируемый файл Exel автоматически добавился в форму для отправки!
Для работы есть все необходимое форма, PHP обработчик, JS конвертер и JS отправка формы с вложением.. все полностью рабочее.. вот только связать не получается форма+конвертируемый файл.. Помогите пожалуйста. Вот код: скрипт 1 конвертер таблицы HTML var tableToExcel = (function() { var uri = 'data:application/vnd.ms-excel;base64,' , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>' , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) } , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) } return function(table, name) { if (!table.nodeType) table = document.getElementById(table) var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} window.location.href = uri + base64(format(template, ctx)) } })() форма <form action="#" method="post" id="sendform" enctype="multipart/form-data" > <input name="file" value="1" size="40" type="file" /> <input value="Отправить" name="sendMail" type="submit" /> </form> скрипт 2 для отправки формы // Как только страничка загрузилась window.onload = function () { // проверяем поддерживает ли браузер FormData if(!window.FormData) { /* * если не поддерживает, то выводим * то выводим предупреждение вместо формы */ var div = ge('content'); div.innerHTML = "Ваш браузер не поддерживает объект FormData"; div.className = 'notSupport'; } } $(document).ready(function(){ // =validation var errorTxt = 'Ошибка отправки'; $("#sendform").validate({ submitHandler: function(form){ var form = document.forms.sendform, formData = new FormData(form), xhr = new XMLHttpRequest(); xhr.open("POST", "/send.php"); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if(xhr.status == 200) { $("#sendform").html('<p class="thank">Данные отправлены!<p>'); } } }; xhr.send(formData); } }); }) function sendSuccess(callback){ $(callback).find("form fieldset").html(thank); и еще PHP который работает в связке <?php $to = 'barselonaua@gmail.com'; if ( isset( $_POST['sendMail'] ) ) { $name = substr( $_POST['name'], 0, 64 ); $tel = substr( $_POST['tel'], 0, 64 ); $email = substr( $_POST['email'], 0, 64 ); $message = substr( $_POST['message'], 0, 250 ); if ( !empty( $_FILES['file']['tmp_name'] ) and $_FILES['file']['error'] == 0 ) { $filepath = $_FILES['file']['tmp_name']; $filename = $_FILES['file']['name']; } else { $filepath = ''; $filename = ''; } $body = "Имя:\r\n".$name."\r\n\r\n"; $body .= "Контактный номер:\r\n".$tel."\r\n\r\n"; $body .= "E-mail:\r\n".$email."\r\n\r\n"; $body .= "Описание заказа:\r\n".$message; send_mail($to, $body, $email, $filepath, $filename); } |
Часовой пояс GMT +3, время: 21:26. |