Почему не отправляются фото с формы обратной связи если отправлять с телефона?

Ссылка скопирована
8 марта 2026 1 ответ

Здравствуйте! Всем доброго дня и хорошего настроения!
Есть форма обратной связи. Если заполнять на компьютере ее и прикреплять файлы, то все работает: приходит 2 письма: просто с текстом и такая же копия + вложение.
Но вот если заполнять форму на телефоне и прикреплять файл, то приходит только текст. Без вложения. Подскажите, пожалуйста, в чем тут дело?

<form enctype="multipart/form-data" method="post" id="feedback-form">             <label for="nameFF">Имя:</label>             <input type="text" name="nameFF" id="nameFF" required placeholder="например, Иван Иванович Иванов" x-autocompletetype="name" class="w100 border">             <label for="contactFF">Email:</label>             <input type="email" name="contactFF" id="contactFF" required placeholder="например, ivan@yandex.ru" x-autocompletetype="email" class="w100 border">             <label for="fileFF">Прикрепить файл:</label>             <!-- <input type="file" name="fileFF[]" multiple id="fileFF" class="w100"> -->             <input type="file" name="fileFF[]" multiple="multiple" multiple id="fileFF" class="w100" name="files[]" />                          <label for="messageFF">Сообщение:</label>             <textarea name="messageFF" id="messageFF" required rows="5" placeholder="Детали заявки…" class="w100 border"></textarea>             <br>             <input value="Отправить" type="submit" id="submitFF">             </form>

<form enctype="multipart/form-data" method="post" id="feedback-form"> <label for="nameFF">Имя:</label> <input type="text" name="nameFF" id="nameFF" required placeholder="например, Иван Иванович Иванов" x-autocompletetype="name" class="w100 border"> <label for="contactFF">Email:</label> <input type="email" name="contactFF" id="contactFF" required placeholder="например, ivan@yandex.ru" x-autocompletetype="email" class="w100 border"> <label for="fileFF">Прикрепить файл:</label> <!-- <input type="file" name="fileFF[]" multiple id="fileFF" class="w100"> --> <input type="file" name="fileFF[]" multiple="multiple" multiple id="fileFF" class="w100" name="files[]" /> <label for="messageFF">Сообщение:</label> <textarea name="messageFF" id="messageFF" required rows="5" placeholder="Детали заявки…" class="w100 border"></textarea> <br> <input value="Отправить" type="submit" id="submitFF"> </form>

document.getElementById('feedback-form').addEventListener('submit', function(evt){     var http = new XMLHttpRequest(), f = this;     evt.preventDefault();     http.open("POST", "mail.php", true);     http.onreadystatechange = function() {       if (http.readyState == 4 && http.status == 200) {         alert(http.responseText);         if (http.responseText.indexOf(f.nameFF.value) == 0) { // очистить поле сообщения, если в ответе первым словом будет имя отправителя           f.messageFF.removeAttribute('value');           f.messageFF.value='';         }       }     }     http.onerror = function() {       alert('Извините, данные не были переданы');     }     http.send(new FormData(f));   }, false);

document.getElementById('feedback-form').addEventListener('submit', function(evt){ var http = new XMLHttpRequest(), f = this; evt.preventDefault(); http.open("POST", "mail.php", true); http.onreadystatechange = function() { if (http.readyState == 4 && http.status == 200) { alert(http.responseText); if (http.responseText.indexOf(f.nameFF.value) == 0) { // очистить поле сообщения, если в ответе первым словом будет имя отправителя f.messageFF.removeAttribute('value'); f.messageFF.value=''; } } } http.onerror = function() { alert('Извините, данные не были переданы'); } http.send(new FormData(f)); }, false);

<?php if (isset ($_POST['contactFF'])) {   $to = "info@antik88.ru"; // поменять на свой электронный адрес   $from = $_POST['contactFF'];   $subject = "Заполнена контактная форма с ".$_SERVER['HTTP_REFERER'];   $message = "Имя: ".$_POST['nameFF']."nEmail: ".$from."nIP: ".$_SERVER['REMOTE_ADDR']."nСообщение: ".$_POST['messageFF'];   $boundary = md5(date('r', time()));   $filesize = '';   $headers = "MIME-Version: 1.0rn";   $headers .= "From: " . $from . "rn";   $headers .= "Reply-To: " . $from . "rn";   $headers .= "Content-Type: multipart/mixed; boundary="$boundary"rn";   $message=" Content-Type: multipart/mixed; boundary="$boundary"  --$boundary Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit  $message";   for($i=0;$i<count($_FILES['fileFF']['name']);$i++) {      if(is_uploaded_file($_FILES['fileFF']['tmp_name'][$i])) {          $attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFF']['tmp_name'][$i])));          $filename = $_FILES['fileFF']['name'][$i];          $filetype = $_FILES['fileFF']['type'][$i];          $filesize += $_FILES['fileFF']['size'][$i];          $message.="  --$boundary Content-Type: "$filetype"; name="$filename" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="$filename"  $attachment";      }    }    $message.=" --$boundary--";    if ($filesize < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ     mail($to, $subject, $message, $headers);     echo $_POST['nameFF'].', Ваше сообщение получено, спасибо!';   } else {     echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';   } } ?>

<?php if (isset ($_POST['contactFF'])) { $to = "info@antik88.ru"; // поменять на свой электронный адрес $from = $_POST['contactFF']; $subject = "Заполнена контактная форма с ".$_SERVER['HTTP_REFERER']; $message = "Имя: ".$_POST['nameFF']."nEmail: ".$from."nIP: ".$_SERVER['REMOTE_ADDR']."nСообщение: ".$_POST['messageFF']; $boundary = md5(date('r', time())); $filesize = ''; $headers = "MIME-Version: 1.0rn"; $headers .= "From: " . $from . "rn"; $headers .= "Reply-To: " . $from . "rn"; $headers .= "Content-Type: multipart/mixed; boundary="$boundary"rn"; $message=" Content-Type: multipart/mixed; boundary="$boundary" --$boundary Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit $message"; for($i=0;$i<count($_FILES['fileFF']['name']);$i++) { if(is_uploaded_file($_FILES['fileFF']['tmp_name'][$i])) { $attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFF']['tmp_name'][$i]))); $filename = $_FILES['fileFF']['name'][$i]; $filetype = $_FILES['fileFF']['type'][$i]; $filesize += $_FILES['fileFF']['size'][$i]; $message.=" --$boundary Content-Type: "$filetype"; name="$filename" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="$filename" $attachment"; } } $message.=" --$boundary--"; if ($filesize < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ mail($to, $subject, $message, $headers); echo $_POST['nameFF'].', Ваше сообщение получено, спасибо!'; } else { echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.'; } } ?>

Заранее благодарю за советы!

Дополнительно:

Выкинуть отсюда js и попробовать без него

  • Дмитрий, там просто дурацкая ошибка в коде, но теперь буду знать, что в js еще может быть дело)
  • <input type="file" name="fileFF[]" multiple="multiple" multiple id="fileFF" class="w100" name="files[]" />

    <input type="file" name="fileFF[]" multiple="multiple" multiple id="fileFF" class="w100" name="files[]" />

    Два раза указан атрибут name, причем теперь он files[], а в коде проверяется fileFF

    • ThunderCat Ой, спасибо Вам большое! Я уже расстроилась, что опять всё зря)) Спасибо большое! Я уже ничего не вижу, а Вы так быстро нашли мою дурацкую ошибку)
    • Анна, Воспользуйтесь нормальным редактором для разработки. И он вам будет подсвечивать такие примитивные ошибки или опечатки

      Почему не отправляются фото с формы обратной связи если отправлять с телефона?

      Сразу видно, что name и multiple повторяются

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Максим Павлов Ответ

    Проблема, с которой вы столкнулись, может иметь несколько потенциальных причин. Давайте рассмотрим несколько возможных решений:

    1. Проверьте настройки размера и типа файла: Возможно, что фотографии, которые вы пытаетесь отправить через форму обратной связи, не соответствуют требованиям по размеру или типу файла, установленным на сервере. Убедитесь, что размер файлов не превышает установленный лимит и файлы имеют допустимые расширения (например, .jpg, .png).

    2. Проверьте соединение с интернетом: Если вы отправляете фотографии с телефона, убедитесь, что у вас есть стабильное подключение к интернету. Плохое соединение может привести к проблемам с загрузкой файлов на сервер.

    3. Проверьте код формы обратной связи: Возможно, в коде формы обратной связи есть ошибки или неправильно настроены заголовки при отправке файлов с мобильного устройства. Убедитесь, что код формы правильно обрабатывает загрузку файлов с мобильных устройств.

    4. Попробуйте использовать другой браузер или устройство: Иногда проблема может быть связана с конкретным браузером или устройством. Попробуйте отправить фотографии с другого браузера или устройства, чтобы исключить возможные проблемы.

    Если после выполнения этих шагов проблема не будет решена, рекомендуется обратиться к специалисту по веб-разработке или администратору сервера для дальнейшей диагностики и устранения неполадок.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно