Intereting Posts
Как отображать процент загрузки и как это сделать без javascript? Как ограничить количество голосов в день по IP в голосовании Php + Mysql? Есть ли запрос MySQL, который может кодировать JSON именно таким образом? как получить ранжирование позиции определенной строки, используя только mysql-запрос? Отправить несколько строк в одном письме Вставить tr после каждого третьего цикла Когда фильтровать / дезинфицировать данные: перед вставкой базы данных или перед отображением? Mongodb php получает идентификатор нового документа? Команда GOTO в PHP? как показать все данные из таблицы joomla? Запуск __call () в PHP, даже когда существует метод Показать диалоговое окно «Сохранить как» при загрузке файла из iframe через PHP Закладка facebook app с параметром Не удается отправить заголовки; заголовки, уже отправленные в /home/zk/public_html/lib/Zend/Cache/Backend/File.php, строка 1 Как мы можем изменить непрозрачность и затенение шрифта в функции imagettftext?

$ _FILES пуст после отправки формы

Я использую стандартные функции PHP для загрузки файла для использования в качестве вложения с PHPMailer.

<form name="upload" method="post" action="send_form_email3.php"> <div width="100%" class="con3"> <div class="lable"> <label for="first_name">First Name *</label> </div> <input type="text" name="first_name" id="first_name" class="span4"> <div class="lable"> <label for="email">Email Address *</label> </div> <input type="text" name="email" id="email" class="span4"> <div class="lable"> <label for="telephone">Contact Number *</label> </div> <input type="text" name="telephone" id="telephone" class="span4"> <div class="lable"> <label for="comments">Message *</label> </div> <textarea name="comments" rows="8" id="comments" class="span4"></textarea> <div class="lable"> <label for="upload">Send Us Your CV *</label> </div> <input type="file" name="upload" id="upload" /> <input type="submit" value="Submit" class="btn btn-success"> </div> </form> 

Эта форма передается следующему обработчику php, где почта построена и отправлена:

 <?php require_once("class.phpmailer.php"); $first_name = $_POST['first_name']; // required $email_from = $_POST['email']; // required $telephone = $_POST['telephone']; // required $comments = $_POST['comments']; // required echo "just got form values<br />"; echo $_FILES['upload']['name'].'<br />'; $email_message = "Form details below.<br />"; function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$string); } $email_message .= "Name: ".clean_string($first_name)."\n"; $email_message .= "Email: ".clean_string($email_from)."\n"; $email_message .= "Contact: ".clean_string($telephone)."\n"; $email_message .= "Message:\n".clean_string($comments)."\n"; echo "added text to email<br />"; $target_path = "uploads/"; $target_path = $target_path . basename( $_FILES['upload']['name']); // upload the file echo "target = ".$target_path."<br />"; if (isset($_FILES['upload']['size'])) { if ($_FILES['upload']['size'] > 0) { echo 'file size: '.basename($_FILES['upload']['size']).'<br />'; if (move_uploaded_file($_FILES['upload']['name'], $target_path)) { echo "The file ". basename( $_FILES['upload']['name'])." has been uploaded<br />"; // adding an already existing file as an attachment to the email for debugging purposes. $email->AddAttachment('uploads/CreditReportViewer.pdf'); } else { echo "There was an error uploading the file, please try again!<br />&nbsp;".basename($_FILES['upload']['error']); } } else { echo "There was an error uploading the file, please try again!<br />"; } } else { echo "No file was found for the upload.<br />"; } $email = new PHPMailer(); $email->To = "me@this.com"; $email->From = $email_from; $email->FromName = $first_name; $email->Subject = "New Message from Website"; $email->Body = $email_message; echo "\n mail built...<br />"; $email->Send(); echo "mail sent!"; ?> 

Проблема в том, что $_FILES['upload']['name'] не установлен. Вот эхо, которое записывается в браузер:

просто получили значения формы

добавлен текст в электронную почту
target = uploads /
Файл для загрузки не найден.
почта …
почта отправлена!

Это заставляет меня думать, что я ссылаюсь на поле загрузки файла или на загрузку неправильно.

Может ли кто-нибудь увидеть какие-либо проблемы здесь или дать некоторые рекомендации, если это не лучший способ сделать это?

Вы должны добавить,

 enctype= "multipart/form-data" 

Измените свою форму,

 <form name="upload" method="post" action="send_form_email3.php" enctype= "multipart/form-data"> 

добавьте enctype в вашу форму: change:

 <form name="upload" method="post" action="send_form_email3.php"> 

в

 <form name="upload" method="post" action="send_form_email3.php" enctype="multipart/form-data"> 

Еще один совет: если файл upload_max_filesize (php.ini) меньше, чем файл, выбранный пользователем, $ _FILES будет пустым.

Вы забываете указать multipart в декларации формы.

добавьте enctype="multipart/form-data" в форме.

Вы должны добавить в enctype=multipart/form-data .

 <form name="upload" method="post" action="send_form_email3.php" enctype="multipart/form-data"> 

Поскольку он передается как поток MIME, очень отличается от обычного POST

Что означает enctype = 'multipart / form-data'?

Если вы добавили enctype и все еще не сработали – проверьте права доступа к файлу PHP. в ooowebhost вы можете найти его в chmod. измените на '777'. в противном случае у файла нет прав на выполнение / запись