@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');
?>
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что в письмо добавляется только один файл.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@galaxy
В дополнение отмечу, что мало кто понимает, как работает <input name="file" type="file" multiple="">.
Почему-то думают, что если несколько раз нажать на кнопку загрузки, то и прикрепится несколько. На самом деле при каждом следующем нажатии и выборе нового файла старый затирается.

Несколько файлов надо выбирать сразу через зажатый Ctrl.
Ответ написан
sslion
@sslion
капец...
<input name="file[]" type="file" multiple>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽