Как сохранить изображение в корневой папке CodeIgniter и в базе данных? - PullRequest
0 голосов
/ 06 ноября 2019

Мне нужно, чтобы пользователь мог изменить изображение профиля, но я не могу найти четкую документацию, показывающую, как работает процесс загрузки CodeIgniter, обучая пошаговое руководство.

Я уже создал столбец с именем user_profile в основной таблице.

В контроллере я определяю размер , тип и выполняю его шифрование.

public function update_profile(){

    $config["upload_path"] = "public/images/profile";
    $config["allowed_types"] = "jpg|jpeg|gif|png";
    $config["max_size"] = 700;
    $config["max_width"] = 1024;
    $config["max_height"] = 768;
    $config["encrypt_name"] = TRUE;

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

    if($this->upload->do_upload('user_profile'))
    {
        $info_arquivo = $this->upload->data();
        $user_profile = $info_arquivo["file_name"];

        $this->load->model("profile_model");

        $image_perfil = array(
            "user_profile" => $user_profile
        );

        $query = $this->profile_model->insert_image($image_perfil);

        if($query){
            $this->session->set_flashdata('msg', 'Imagem de perfilfoi atualizada');
            redirect(base_url('admin/dashboard'), 'refresh');
        } else {
            $this->session->set_flashdata('msg', 'Imagem de perfil não foi atualizada');
            redirect(base_url('admin/profile'), 'refresh');
        }
    }
    else
    {
        $this->session->set_flashdata('msg', 'Imagem de perfil não foi atualizada');
        redirect(base_url('admin/profile'), 'refresh');
    }

}

Ив представлении admin / profile я поместил следующую форму.

                <!-- UPLOAD IMAGE USER -->
                <?php echo form_open_multipart('admin/update_profile'); ?>
                    <div    class="form-group">
                        <label>Selecione uma imagem</label>
                        <input type="file" name="user_profile" class="form-control" id="user_profile" required/>
                    </div>
                    <div    class="form-group">
                        <button type="submit" class="btn btn-success pull-right" value="cadastrar">Cadastrar</button>
                    </div>
                </form>
                <!-- END UPLOAD IMAGE USER -->

И в моей модели Profile_model я вставил имя файла в столбец user_profile

class Profile_model extends CI_Model{

    public function insert_image($user_profile)
    {   
        $this->db->insert('ci_users', $user_profile);

        return $this->db->affected_rows() ? TRUE : FALSE;
    }

}

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019
<code>  public function update_profile()
  {
    $config['upload_path']   = 'public/images/profile/'; 
    $config['allowed_types'] = 'gif|jpg|png'; 
    $config['max_size']      = 1000; 
    $config['max_width']     = 1024; 
    $config['max_height']    = 768;  
    $this->load->library('upload', $config);

    if ( ! $this->upload->do_upload('user_profile')) {
        $error = array('error' => $this->upload->display_errors()); 
        echo "<pre>";
        print_r($error);
        echo "
"; die (); $ this-> session-> set_flashdata ('msg', 'Изображение на английском языке'); redirect (base_url ('admin / profile'), 'refresh'); //$ this-> load-> view ('upload_form', $ error);} else {$ info_arquivo = $ this-> upload-> data (); $ user_profile = $ info_arquivo ["file_name"]; $ this-> load-> модель ("profile_model"); $ image_perfil = array ("user_profile" => $ user_profile); $ query = $ this-> profile_model-> insert_image ($ image_perfil); if ($ query) {$ this-> сеанс-> set_flashdata ('msg', 'Imagem de perfilfoi atualizada'); перенаправление (base_url ('admin / dashboard'), 'refresh');} else {$ this-> session-> set_flashdata ('msg', 'Imagemde perfil não foi atualizada '); перенаправление (base_url (' admin / profile '),' refresh ');}}}

VIEW

 <!DOCTYPE html>
 <html>
 <head>
<title></title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
  </head>
  <body>

   <form action="<?php echo base_url('stackoverflow/update_profile');?>" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label>Selecione uma imagem</label>
        <input type="file" name="user_profile" class="form-control" id="user_profile" required/>
    </div>
    <div    class="form-group">
        <button type="submit" class="btn btn-success pull-right" value="cadastrar">Cadastrar</button>
    </div>
</form>

</body>
</html>
0 голосов
/ 06 ноября 2019

Я думаю, что ваша ошибка в форме URL. Пожалуйста, добавьте index.php в HTML-форму ниже

   <!-- UPLOAD IMAGE USER -->
            **<?php echo form_open_multipart('index.php/admin/update_profile'); ?>**
                <div    class="form-group">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...