Codeigniter – добавление 2 файлов в электронную почту, которые были загружены из пользовательской формы на веб-сервер

У меня есть форма, которая при заполнении загружает 2 файла (один – документ, docx или pdf, а другой – файл изображения). Мой контроллер проверяет форму ok и загружает файлы на сервер. Моя проблема заключается в доступе к массиву загруженных файлов !?

Я ссылался на массив в переменной с именем $, загруженной в форму, и из ошибки кажется, что фактический массив, кажется, называется «успехом» (я нажимаю, что он получает это имя из библиотеки upload.php). 2 элемента, называемые [0] и [1], каждый из которых содержит другой массив атрибутов файла.

Я собираюсь объединить круги, пытаясь прикрепить эти два файла к электронному письму. Надеюсь, кто-то сможет помочь новичку? Я поставлю код контроллера ниже, если вам нужен какой-либо другой код, пожалуйста, дайте мне знать.

EDIT : я обновил код ниже. У меня теперь немного успеха (не так много): цикл for теперь прикрепляет 1 файл, но дважды. Таким образом, либо мой код не индексирует массив правильно, либо массив не сохраняет информацию о файле?

<?php class Form extends CI_Controller { function index() { $this->load->helper(array('form', 'url')); $this->load->library('form_validation'); $this->form_validation->set_rules('first_name', 'First Name', 'required|alpha'); $this->form_validation->set_rules('last_name', 'Surname', 'required|alpha'); $this->form_validation->set_rules('dob', 'Date of Birth', 'required'); $this->form_validation->set_rules('nationality', 'Nationality', 'required|alpha'); $this->form_validation->set_rules('gender', 'Gender', 'required'); $this->form_validation->set_rules('address_l1', 'Address Line 1', 'required|alpha_dash_space'); $this->form_validation->set_rules('address_l2', 'Address Line 2', 'alpha'); $this->form_validation->set_rules('address_city', 'City', 'required|alpha'); $this->form_validation->set_rules('address_postcode', 'Post Code', 'required|alpha_dash_space'); $this->form_validation->set_rules('address_country', 'Country', 'required|alpha_dash_space'); $this->form_validation->set_rules('e_address', 'Email Address', 'required|valid_email'); $this->form_validation->set_rules('h_tel', 'Home Telephone Number', 'required|numeric'); $this->form_validation->set_rules('mobile', 'Mobile Number', 'required|numeric'); $this->form_validation->set_rules('university', 'University', 'required|alpha_dash_space'); $this->form_validation->set_rules('campus', 'Campus Name', 'required|alpha_dash_space'); $this->form_validation->set_rules('course', 'Course Title', 'required|alpha_dash_space'); $this->form_validation->set_rules('end_date', 'Course End Date', 'required'); if ($this->form_validation->run() == FALSE) { $this->load->view('home'); } else { //Display Success page $this->load->view('formsuccess'); //Send Email $this->load->library('email'); //Array helper $this->load->helper('array'); //Upload files to server $this->load->library('upload'); $config['upload_path'] = './attachments'; //if the files does not exist it'll be created $config['allowed_types'] = 'gif|jpg|png|doc|docx|txt|pdf'; $config['max_size'] = '4000'; //size in kilobytes $config['encrypt_name'] = TRUE; $this->upload->initialize($config); $uploaded = $this->upload->up(FALSE); //Pass true if you want to create the index.php files $data = $this->upload->data(); for ($i = 0; $i <= 1; $i++) { // ignore file that have not been uploaded //if (empty($_FILES['uploaded'.$i])) continue; //get the data of the file //$fileName = $data['uploaded'.$i]['name']; $filepath = $data['full_path']; //add only if the file is an upload echo $data['full_path']; $this->email->attach($filepath); //$mail->AddAttachment($filePath, $fileName); } $this->email->from('your@example.com', 'Your Name'); $this->email->to('t.bryson@shu.ac.uk'); $this->email->subject('Application for Accommodation (Non-SHU)'); $this->email->message('Testing the email class.'); $this->email->send(); echo $this->email->print_debugger(); } } function alpha_dash_space($str_in) { if (! preg_match("/^([-a-z0-9_ ])+$/i", $str_in)) { $this->form_validation->set_message('_alpha_dash_space', 'The %s field may only contain alpha-numeric characters, spaces, underscores, and dashes.'); return FALSE; } else { return TRUE; } } } ?> 

Проделал это вначале, с некоторой помощью от google:

 $uploaded = $this->upload->up(FALSE); //Pass true if you want to create the index.php files var_dump($uploaded); $data = array('uploaded_data'); //Attach the 2 files to email foreach($_FILES as $key => $value){ //var_dump($uploaded['success'][$key]['full_path']); //FOR TESTING $file = $uploaded['success'][$key]['full_path']; $this->email->attach($file); //unlink($file); }