@verstak2020

Как переделать код php, что бы отправлялись несколько файлов?

Есть форма обратной связи, отправка настроена через библиотеку PhpMailer. Как переделать код php, что бы отправлялись несколько файлов ? На данный момент отправляется 1 последний файл из множества

if (isset($_FILES["uploaded_file"]) && !empty($_FILES["uploaded_file"]["name"])) {

        $file_name = $_FILES['uploaded_file']['name'];
        $file_size = $_FILES['uploaded_file']['size'];
        $file_tmp = $_FILES['uploaded_file']['tmp_name'];
        $file_type = $_FILES['uploaded_file']['type'];
        $file_ext = strtolower(end(explode('.', $_FILES['uploaded_file']['name'])));

        $expensions = array("jpeg", "jpg", "JPG", "png", "pdf", "heic", "gif", "bmp", "tiff");

        if (in_array($file_ext, $expensions) === false) {
            $errors[] = "extension not allowed, please choose a PDF, JPEG or PNG file.";
        }

        if ($file_size > 6291456) {
            $errors[] = 'File size must be excately 6 MB';
        }

        if (empty($errors) == true) {

            $mail->AddAttachment($file_tmp, $file_name);



        } else {
            print_r($errors);
        }

    } else {

    }
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
@alexalexes
Форма должна накидывать файлы в name="uploaded_file[]".
А сервер должен итерировать так:
if (isset($_FILES["uploaded_file"]) && !empty($_FILES["uploaded_file"]["name"]) && is_array($_FILES["uploaded_file"]["name"]) && count($_FILES["uploaded_file"]["name"]) > 0)
{
  for($i = 0; $i < count($_FILES["uploaded_file"]["name"]); $i++)
  {
    $file_name = $_FILES['uploaded_file']['name'][$i];
    $file_size = $_FILES['uploaded_file']['size'][$i];
    $file_tmp = $_FILES['uploaded_file']['tmp_name'][$i];
    $file_type = $_FILES['uploaded_file']['type'][$i];
    $file_ext = strtolower(end(explode('.', $_FILES['uploaded_file']['name'][$i])));
    ...
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы