@carbanak01

Почему массив $_FILES['имя инпута']['name'] пустой?

Пытаюсь отправить картинку на почту с помощью фреймворка PHPMailer.
Суть в том что отправляется как ой то файл phpdfw234 (к примеру), а картинки нет. Понял что проблема $_FILES['имя инпута']['name'].
$mail->addAttachment($_FILES['upload']['tmp_name'], $FILES['upload']['name']);

На просторах интернета нашёл код, он работает, но не пойму как.
if (isset($_FILES)) { 
	print_r($_FILES);//если есть файлы в форме
    foreach ($_FILES as $file_item) {
    if (!is_array($file_item['error'])) { //проверяем множественное или нет поле файла
      if ($file_item['error'] == UPLOAD_ERR_OK) {
        $mail->addAttachment($file_item['tmp_name'],$file_item['name']);
      }
    } else {
      foreach ($file_item["error"] as $key => $error){
        if ($error == UPLOAD_ERR_OK) {
           $tmp_name = $file_item["tmp_name"][$key];
           $name = $file_item["name"][$key];
           $mail->addAttachment($tmp_name,$name);
        }
      }
    }
  }
}
  • Вопрос задан
  • 187 просмотров
Решения вопроса 1
@carbanak01 Автор вопроса
Я нашёл свою ошибку, из за невнимательности пропусти underscore в коде
Было:
$mail->addAttachment($_FILES['upload']['tmp_name'], $FILES['upload']['name']);

Стало:
$mail->addAttachment($_FILES['upload']['tmp_name'], $_FILES['upload']['name']);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
402d
@402d
начинал с бейсика на УКНЦ в 1988
https://www.php.net/manual/ru/reserved.variables.f...
обратите внимание, что половина пользовательских комментариев о том как разложить этот массив удобнее

В вашем коде есть строчка
print_r($_FILES);//если есть файлы в форме

Тут как раз вывод на экран того, что в массиве. Смотрите как разложено по ключам.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
я думаю, тут банальная проблема с enctype
Ответ написан
Ваш ответ на вопрос

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

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