Такая вот проблема. Сразу говорю что с PHP встретился впервые и не могу разобраться. Значит есть форма, которая отправляет данные с сайта мне на почту. В форме добавлена возможность загрузки файла. HTML: <input id="fileSendButt" name="file[]" value="1" size="40" type="file" multiple /> Раньше я размечал данное окно так. Но сейчас захотел сделать Drag-and-drop. Разметка у меня теперь поменялась на такую HTML: <div class="upload"></div> тоесть просто блок. В котором библиотека Formstone должна cделать нужный Drag-and-drop обьект. Все так и работает, но писльмо на почту приходит без файла. НЕ могу понять почему??? буду очень благодарен за помощь, так как на эту проблему уходят уже вторые сутки... Вот PHP код PHP: <?php $to = 'maxim.demkiv@gmail.com'; if ( isset( $_POST['sendMail'] ) ) { $price = substr( $_POST['price'], 0, 64 ); $words = substr( $_POST['words'], 0, 64 ); $pos = substr( $_POST['pos'], 0, 64 ); $source_language = substr( $_POST['source_language'], 0, 64 ); $target_language = substr( $_POST['target_language'], 0, 64 ); $name = substr( $_POST['name'], 0, 64 ); $email = substr( $_POST['email'], 0, 64 ); $orderNum = substr( $_POST['orderNum'], 0, 64 ); $orderDate = substr( $_POST['orderDate'], 0, 64 ); $message = substr( $_POST['message'], 0, 250 ); if($_FILES) { $filepath = array(); $filename = array(); $file2 = array(); $i = 0; foreach ($_FILES["file"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $filename[$i][0] = $_FILES["file"]["tmp_name"][$key]; $filename[$i][1] = $_FILES["file"]["name"][$key]; $i++; } } } $body = "Нове замовлення, виконане із сторінки ( ".$pos." )\r\n\r\n"; $body .= "№ замовлення:\r\n".$orderNum."\r\n\r\n"; $body .= "Ім'я замовника:\r\n".$name."\r\n\r\n"; $body .= "Розмір замовлення:\r\n".$words." слів\r\n\r\n"; $body .= "Вартість розрахована калькулятором на сайті:\r\n".$price."€\r\n\r\n"; $body .= "E-mail:\r\n".$email."\r\n\r\n"; $body .= "Переклад з:\r\n".$source_language."\r\n\r\n"; $body .= "Переклад на:\r\n".$target_language."\r\n\r\n"; $body .= "Повідомлення від клієнта:\r\n".$message."\r\n\r\n"; $body .= "Замовлення створено клієнтом :\r\n".$orderDate; send_mail($to, $body, $email, $filename); } // Вспомогательная функция для отправки почтового сообщения с вложением function send_mail($to, $body, $email, $filename) { $subject = 'Нове замовлення із сайту iLeo'; $boundary = "--".md5(uniqid(time())); // генерируем разделитель $headers = "From: ".$email."\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n"; $multipart = "--".$boundary."\r\n"; $multipart .= "Content-type: text/plain; charset=\"utf-8\"\r\n"; $multipart .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n"; $body = $body."\r\n\r\n"; $multipart .= $body; foreach ($filename as $key => $value) { $fp = fopen($value[0], "r"); $content = fread($fp, filesize($value[0])); fclose($fp); $file .= "--".$boundary."\r\n"; $file .= "Content-Type: application/octet-stream\r\n"; $file .= "Content-Transfer-Encoding: base64\r\n"; $file .= "Content-Disposition: attachment; filename=\"".$value[1]."\"\r\n\r\n"; $file .= chunk_split(base64_encode($content))."\r\n"; } $multipart .= $file."--".$boundary."--\r\n"; mail($to, $subject, $multipart, $headers); } ?> а вот js Код (Javascript): // Как только страничка загрузилась window.onload = function () { // проверяем поддерживает ли браузер FormData if(!window.FormData) { /* * если не поддерживает, то выводим * то выводим предупреждение вместо формы */ alert('dsfdsa'); // var div = ge('content'); // div.innerHTML = "Ваш браузер не поддерживает объект FormData"; // div.className = 'notSupport'; } } jQuery(document).ready(function(){ // =validation var errorTxt = 'Ошибка отправки'; jQuery("#sendform").validate({ submitHandler: function(form){ /*унікальний номер замовлення*/ var date=new Date(); document.getElementById('orderDate').value=date; var dateS=""+parseInt(+date); var num=parseInt("3"+dateS.substring(5)); document.getElementById('orderNum').value=num; /*-----------------------*/ var form = document.forms.sendform, formData = new FormData(form), xhr = new XMLHttpRequest(); xhr.open("POST", "php/multisend.php"); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if(xhr.status == 200) { var popap=document.querySelector(".orderSuccessful"); var overlay=document.querySelector(".overlay"); (function Show(){ popap.classList.add("show-block"); overlay.classList.add("show-block"); })(); //jQuery("#sendform").html('<p class="thank">Данные отправлены!<p>'); } } }; xhr.send(formData); } }); }) function sendSuccess(callback){ jQuery(callback).find("form fieldset").html(thank); startClock(); }
вот html код который генерирует библиотека HTML: <div class="upload r fs-upload-element fs-upload fs-light"> <div class="fs-upload-target">Перетягніть</div> <input class="fs-upload-input" type="file" multiple=""> </div> Как я понимаю дело в том что файл на сервер передает но не отправляет на ящик...