Не удается загрузить файл в папку codeigniter с помощью контроллера CI

Я создаю форму, в которой человек может добавить в нее изображение, и оно будет отображаться в папке локального каталога и отображаться в таблице sql. Но похоже, что сколько раз я пытался загрузить картинку, не загружаю! Пожалуйста помоги!

Контроллер:

    <?php

if (!defined('BASEPATH'))
   exit('No direct script access allowed');

class Auth extends MY_Controller {

   function __construct() {
       parent::__construct();
       $this->load->database();
       $this->load->library('session');
       $this->load->library(array('ion_auth', 'form_validation'));
       $this->load->helper(array('url', 'language', 'form'));
$this->load->model('Ion_auth_model');

       $this->form_validation->set_error_delimiters($this->config->item('error_start_delimiter', 'ion_auth'), $this->config->item('error_end_delimiter', 'ion_auth'));

       log_message('debug', 'CI My Admin : Auth class loaded');
   }

   public function index() {
       $data['page'] = $this->config->item('englishlivebali_template_dir_public') . "login_form";
       $data['module'] = 'auth';
       $this->load->view($this->_container, $data);
   }

   public function login_form(){
       if ($this->ion_auth->logged_in()) {
           redirect('student', 'refresh');
       } else {
           $data['page'] = $this->config->item('englishlivebali_template_dir_public') . "login_form";
           $data['module'] = 'auth';

           $this->load->view($this->_container, $data);
       }
   }

    public function login_formteacher(){
       if ($this->ion_auth->logged_in()) {
           redirect('teacher', 'refresh');
       } else {
           $data['page'] = $this->config->item('englishlivebali_template_dir_public') . "login_formteacher";
           $data['module'] = 'auth';

           $this->load->view($this->_container, $data);
       }
   }

   public function login() {
       $this->form_validation->set_rules('username', 'Username', 'required');
       $this->form_validation->set_rules('password', 'Password', 'required');

       if ($this->form_validation->run() == true) {
           $remember = (bool) $this->input->post('remember');

           if ($this->ion_auth->login($this->input->post('username'), $this->input->post('password'), $remember)) {
               if ($this->input->post('username')=='teacher') {
                   $this->session->set_flashdata('message', $this->ion_auth->messages());
                   redirect('/teacher/dashboard', 'refresh');
               }
               elseif ($this->input->post('username')!=='teacher') {
                    $this->session->set_flashdata('message', $this->ion_auth->messages());
                   redirect('/student/index', 'refresh');
               } 
               else {
                   $this->session->set_flashdata('message', $this->ion_auth->messages());
                   redirect('/student/dashboard', 'refresh');
               }
           } else {
               $this->session->set_flashdata('message', $this->ion_auth->errors());
               redirect('auth/login_form', 'refresh');
           }
       }
   }

    public function logout() {
        $this->ion_auth->logout();

        redirect('auth', 'refresh');
    }


/* End of file auth.php */
/* Location: ./modules/auth/controllers/auth.php */


    public function users_save()
{
    $username = $_POST["username"];
    $email = $_POST["email"];
    $salt       = $this->Ion_auth_model->store_salt ? $this->Ion_auth_model->salt() : FALSE;
    $password = $this->Ion_auth_model->hash_password($_POST["password"], $salt);

    $this->load->library('form_validation');
    $this->form_validation->set_rules('username', 'Username', 'required');
    $this->form_validation->set_rules('email', 'Email', 'required');
    $this->form_validation->set_rules('password', 'Password', 'required');
    if ($this->form_validation->run()===FALSE)
    {
        $this->session->set_flashdata('gagal_user_save', 'Gagal Menambahkan User Baru');
            redirect('auth');
    }
    else {
    $this->db->query("INSERT INTO users (username, email, password, active) values ('$username', '$email', '$password', 1)");
    $idn = $this->db->query("select id from users order by id desc limit 1")->result();
    foreach ($idn as $val => $value ){
        $idValue = $value->id; 
    }

    $this->db->query("insert into users_groups (user_id, group_id) values ('$idValue','$idgz')");
    $this->session->set_flashdata('sukses_user_save', 'Sign Up Success, Now Please Log In');
    redirect ('auth');
    }
}

    public function biodata()
{
    $namad = $_POST["namad"];
    $namab = $_POST["namab"];
    $tempat_lahir = $_POST["tempat_lahir"];
    $tgl_lahir = $_POST["tgl_lahir"];
    $jk = $_POST["jk"];
    $agama = $_POST["agama"];
    $ayah = $_POST["ayah"];
    $ibu = $_POST["ibu"];
    $alamat = $_POST["alamat"];

    $idz = $this->input->post('up');
    $this->db->query("UPDATE users SET first_name = '$namad', last_name = '$namab', tempat_lahir = '$tempat_lahir', tgl_lahir = '$tgl_lahir', jk = '$jk', agama = '$agama', ayah = '$ayah', ibu = '$ibu', alamat = '$alamat' WHERE id = '$idz'");
    redirect ('student/biodata');
}

public function do_upload()
{


                $config['upload_path']          = './uploads/';
                $config['allowed_types']        = 'gif|jpg|png|jpeg';

                $this->load->library('upload', $config);

                if ( ! $this->upload->do_upload()) 
                {
                        $error = array('error' => $this->upload->display_errors());
                        redirect ('student/biodata');

                }else{
                        $file_data = $this->upload->data();
                        $data['img'] = base_url().'/uploads/'.$file_data['file_name'];

                    }
                }

            }

Тип ввода в форме имеет идентификатор «gambar_produk», а также имя «gambar_produk». Я пытаюсь использовать функцию do_upload. Я пробовал искать разные способы, но все равно не работает. Пожалуйста помоги!

Сбросьте $this->upload->do_upload() с $this->upload->do_upload('gambar_produk')

Pradeep 30.07.2018 11:01

пожалуйста, проверьте документацию по классу загрузки файлов на сайте codeigniter.com/userguide3/libraries/file_uploading.html

vasilenicusor 30.07.2018 11:05

Пожалуйста, всегда отвечайте на ответы, давая несколько комментариев или, если это помогает вам, отмечая его как зеленый и поддерживая, это лучший способ поблагодарить всех программистов.

Pradeep 30.07.2018 16:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
821
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Надеюсь, что это поможет вам :

Примечание: ваша форма должна иметь атрибут enctype = "multipart/form-data", лучше использовать form_open_multipart();

Relace $this->upload->do_upload() с $this->upload->do_upload('gambar_produk'), где gambar_produk - имя входного файла

Ваш метод do_upload должен быть таким:

public function do_upload()
{
    $config['upload_path']          = './uploads/';
    $config['allowed_types']        = 'gif|jpg|png|jpeg';
    $this->load->library('upload', $config);
    if ( ! $this->upload->do_upload('gambar_produk')) 
    {
      $error = array('error' => $this->upload->display_errors());
      redirect ('student/biodata');

    }else
    {
      $file_data = $this->upload->data();
      $data['img'] = base_url().'/uploads/'.$file_data['file_name'];

    }
}

Подробнее: https://www.codeigniter.com/userguide3/libraries/file_uploading.html

По умолчанию do_upload ожидает, что файл будет поступать из поля формы с именем файл пользователя, и форма должна иметь тип «multipart».

Чтобы все заработало, измените имя входного файла gambar_produk на файл пользователя или используйте

if ( ! $this->upload->do_upload('gambar_produk')) 
{
    $error = array('error' => $this->upload->display_errors());
    redirect ('student/biodata');

}else{
    $file_data = $this->upload->data();
    $data['img'] = base_url().'/uploads/'.$file_data['file_name'];

}

Другие вопросы по теме