@JsNoobUser

Почему на почту приходит только один файл?

У формы есть enctype="multipart/form-data"

<input name="file" type="file" multiple="">

<?php
$to = '';

if ( isset( $_POST['email'] ) ) {
  $name  = substr( $_POST['name'], 0, 64 );
  $tel = substr( $_POST['phone'], 0, 64 );
  $email   = substr( $_POST['email'], 0, 64 );
  $message = substr( $_POST['comment'], 0, 250 );
  $formtype = substr( $_POST['formtype'], 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."\r\n\r\n";
  $body .= "Откуда заявка:\r\n".$formtype;
 
  send_mail($to, $body, $email, $filepath, $filename);
}


function send_mail($to, $body, $email, $filepath, $filename)
{
  $subject = '';
  $boundary = "--".md5(uniqid(time())); 
  $headers = "From: Лендинг" . "\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;
 
  $file = '';
  if ( !empty( $filepath ) ) {
    $fp = fopen($filepath, "r");
    if ( $fp ) {
      $content = fread($fp, filesize($filepath));
      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=\"".$filename."\"\r\n\r\n";
      $file .= chunk_split(base64_encode($content))."\r\n";
    }
  }
  $multipart .= $file."--".$boundary."--\r\n";
  mail($to, $subject, $multipart, $headers);
}

ini_set('short_open_tag', 'On');
header('Refresh: 2; URL=index.html');
?>
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что в письмо добавляется только один файл.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@galaxy
В дополнение отмечу, что мало кто понимает, как работает <input name="file" type="file" multiple="">.
Почему-то думают, что если несколько раз нажать на кнопку загрузки, то и прикрепится несколько. На самом деле при каждом следующем нажатии и выборе нового файла старый затирается.

Несколько файлов надо выбирать сразу через зажатый Ctrl.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
ВЕРТЕКС Санкт-Петербург
от 90 000 ₽
Laptop.ru Москва
от 150 000 до 190 000 ₽
Laptop.ru Санкт-Петербург
от 130 000 до 170 000 ₽