Codeigniter enctype = "multipart / form-data" неправильно сохраняет фотографию - PullRequest
1 голос
/ 27 января 2020

Codeigniter Когда я использую enctype = "multipart / form-data" в форме регистрации фотография не сохраняется в базе данных, но фотография собирается в папку загрузки. Затем, когда я удаляю enctype = "multipart / form-data" фотография сохраняется в базе данных, но фотография не загружается в папку загрузки. Если это проблема для кода, пожалуйста, сделайте полный код. Потому что я не хороший разработчик.

Вид

<form method="post" action="family_join" enctype="multipart/form-data" id="wizard">

    <h4 class="text-center mb-4 mt-4">Upload Photo</h4>
    <div class="form-group mt-3 mb-4">
        <div class="dropzone-wrapper">
            <div class="dropzone-desc">
                <i class="glyphicon glyphicon-download-alt"></i>
                <p>Choose an image file or drag it here.</p>
            </div>
            <input type="file" name="photo" class="dropzone">
        </div>
    </div>

    <h4 class="text-center mb-4">Please enter the zipcode</h4>
    <div class="default-form contact-form">
        <div class="form-group">
            <input type="text" name="zipcode" placeholder="Enter Zip Code" required>
        </div>
    </div>

</form>

Контроллер

< ? php
defined('BASEPATH') OR exit('No direct script access allowed');
Class Family_Join extends CI_Controller {
    public
    function __construct() {
        parent::__construct();
        $this->load-> helper(array('form', 'url'));
    }
    public
    function index() {
        $this->form_validation-> set_rules('zipcode', 'Zipcode', 'required|min_length[4]');
        if ($this->form_validation->run()) {
            $zipcode=$this->input->post('zipcode');
            $photo=$this->input->post('photo');
            $status = 1;
            $this->load->model('Family_Join_Model');

            $config['upload_path'] = './uploads/';
            $config['allowed_types'] = 'gif|jpg|png';
            $this->load->library('upload', $config);
            $this->upload->do_upload('photo');

            $this-> Family_Join_Model->insert($zipcode, $photo, $status);
        } else {
            $this->load->view('user/family_join', array('error' => ' '));
        }
    }
}

Модель

< ? php
defined('BASEPATH') OR exit('No direct script access allowed');
Class Family_Join_Model extends CI_Model {

    public
    function insert($zipcode, $photo, $status) {
        $data = array(
            'zipcode' => $zipcode,
            'photo' => $photo,
            'isActive' => $status
        );
        $sql_query=$this->db->insert('tblfm', $data);
        if ($sql_query) {
            $this->session->set_flashdata('success', 'Registration successfull');
            redirect('user/family_join');
        } else {
            $this->session->set_flashdata('error', 'Somthing went worng. Error!!');
            redirect('user/family_join');
        }

    }

}

Ответы [ 3 ]

0 голосов
/ 28 января 2020

Сначала загрузите файл и получите имя файла из данных загруженного файла.

        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $this->load->library('upload', $config);
        if ($this->upload->do_upload('photo')) {
            $file_details = $this->upload->data();
            $photo = $file_details['file_name'];
        } else {
            $file_upload_msg = $this->upload->display_errors('<p>', '</p>');
        }
0 голосов
/ 28 января 2020

</p> <pre><code>$this->upload->do_upload('photo'); $upload_data = $this->upload->data(); $this->Family_Join_Model->insert($zipcode, $upload_data, $status); **Model** public function insert($zipcode, $upload_data, $status) { $data = array( 'zipcode' => $zipcode, 'photo' => $upload_data['file_name'], 'isActive' => $status ); $sql_query=$this->db->insert('tblfm', $data); if ($sql_query) { $this->session->set_flashdata('success', 'Registration successfull'); redirect('user/family_join'); } else { $this->session->set_flashdata('error', 'Somthing went worng. Error!!'); redirect('user/family_join'); } }

0 голосов
/ 28 января 2020

Это происходит потому, что когда вы устанавливаете enctype в multipart / form-data, ваш ввод отправляется на сервер в виде двоичного файла, и двоичный файл не может быть вставлен в базу данных.

Для вставки имени файла в вашу базу данных следуйте шаги ниже.

  1. Keep enctype = multipart / form-data (Таким образом, ваш файл будет загружен на сервер)
  2. замените эту строку:

    $ this-> Family_Join_Model-> insert ($ zipcode, $ photo, $ status);

с этими:

$upload_data = $this->upload->data(); 
$this->Family_Join_Model->insert($zipcode, $upload_data['file_name'], $status);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...