как я нонял проблема вот в чем. Есть форма с импутом, и она работает. Вот этот импут HTML: <input id="fileSendButt" name="file[]" value="1" size="40" type="file" multiple> Далее я подключил библиотеку для Drag-and-drop и она создала вот такой импут, и с этим импутом форма уже не направляет файл на почту Код (Text): <input class="fs-upload-input" type="file" multiple=""> а в силу того что второй импут создает библиотека я немогу его сделать идентичным первому. что нужно поменять в обработчике? вот код 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); } ?>
проверь, что передаешь на сервер если сервер получит пост запрос с правильными именами, то всё заработает.
Сделай PHP: print_r($_FILES); После того как отправил картинку. МОжет у тебя просто картинка не уходит на сервер
вот настройка библиотеки Formstone. postKey -----> Key to upload file as (за спецификацией библиотеки) Код (Javascript): <script type="text/javascript"> jQuery('document').ready(function($){ $('.upload').upload({ action:'php/multisend.php', label:'Перетащите файлы', postKey:'file', }); }); </script>
а вот и доки но я не нашел параметра name лол https://formstone.it/components/dropdown/ --- Добавлено --- и вобще зачем библиотека если вот код который будет работать. Ты же через ajax передаешь? Код (Javascript): var dropZone = $('класс или id твоего элемента'); if (typeof(window.FileReader) == 'undefined') { dropZone.prop('placeholder','Не поддерживается браузером!'); } dropZone[0].ondragover = function() { dropZone.addClass('hover'); return false; }; dropZone[0].ondragleave = function() { dropZone.removeClass('hover'); return false; }; dropZone[0].ondrop = function(event) { event.preventDefault(); dropZone.removeClass('hover'); dropZone.addClass('drop'); var files = event.dataTransfer.files; var data = new FormData(); $.each( files, function( key, value ){ data.append( key, value ); }); $.ajax({ url: 'ajaxrout.php', type: 'POST', data: data, cache: false, processData: false, // Не обрабатываем файлы (Don't process the files) contentType: false, // Так jQuery скажет серверу что это строковой запрос success:function(data){ }, }); }; Он может быть избыточным для тебя. Так что пересмотри и оставь нужное.
Возможно писал эту функцию когда только начинал знакомиться с drug`n drop. Так что возможно там много чего лишнего