【问题标题】:Codeigniter enctype="multipart/form-data" not save photo properlyCodeigniter enctype="multipart/form-data" 无法正确保存照片
【发布时间】:2020-05-13 06:18:42
【问题描述】:

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');
        }

    }

}

【问题讨论】:

    标签: php database codeigniter


    【解决方案1】:

    这是因为当您将 enctype 设置为 multipart/form-data 时,您的输入以二进制文件的形式发送到服务器,而二进制文件无法插入到数据库中。

    要将文件名插入数据库,请按照以下步骤操作。

    1. 保留 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);
    

    【讨论】:

      【解决方案2】:

      先上传文件,从上传的文件数据中获取文件名。

              $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>');
              }
      

      【讨论】:

        【解决方案3】:

        $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');
            }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-06-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-02
          • 2012-08-28
          相关资源
          最近更新 更多