Atish
Atish

Reputation: 31

upload image in codeigniter

I'm trying to upload image in codeigniter, but I got problem in , $this->upload->do_upload('imgname'). if condition not execute, only elese execute and show error message is 'You did not selected file to upload'. but while remove the form upload in all code then it execute perfectly....

controller:

public function add_news()
    {
            $post = $this->input->post();

            unset($post['submit']);

            $this->load->model('Adminmodel','addNews');
            if(!is_dir('uploads'))
            {
                mkdir(base_url().'uploads',0777,true);
            }
            if(!is_dir('uploads/news'))
            {
                mkdir('uploads/news',0777,true);
            }


            $config = [ 
                        'upload_path'=>'uploads/news',
                        'allowed_types'=>'png|jpg|jpeg|gif',
                        'encrypt_name'=>'0777',
                      ];

            $this->load->library('upload', $config);
            if($this->upload->do_upload('newsimg'))
            {
                $data = $this->upload->data();
                $file_path = base_url().'uploads/news/'.$data["raw_name"].$data["file_ext"];
                $post['newsimg'] = $file_path;
                //$this->revEdit->reg_info($id,$post);
                $post['posted'] = date('d-m-Y');
                $this->addNews->store_news($post);
                $this->session->set_flashdata('newsAlert','Yeh! News Added Successfully.');
                redirect('Admin/news');
            }
            else
            {

                $newsdata = $this->addNews->news_list();
                $upload_error = $this->upload->display_errors();


                $this->load->view('Admin/news',compact('upload_error','newsdata'));
            }}

view:

<?=form_open('Admin/add_news',['class'=>'form'],['aid'=>$this->session->userdata('adminId')])?>

    <div class="row">
      <div class="col-sm-12">
        <div class="form-group">
          <label>News Heading</label>
          <?=form_input(['name'=>'title','class'=>'form-control','placeholder'=>'Enter News Title','value'=>set_value('title')])?>


        </div> 
        <div class="form-group">
          <label>News Details</label>
          <?=form_textarea(['name'=>'body','class'=>'form-control','placeholder'=>'Enter News Body','value'=>set_value('body')])?>


        </div>
              <div class="form-group col-sm-3">
                <div class="fileUpload btn btn-primary" data-toggle="tooltip" data-placement="top" title="PDF file only">
                  <span><i class="fa fa-cloud-upload" aria-hidden="true"></i>&nbsp;Select File&nbsp;<span id="Percentage" class="percentage text-center"></span></span>
                  <?=form_upload(['name'=>'newsimg','class'=>'upload','id'=>'file1','onchange'=>'loadPdf(event)'])?>

                </div>
              </div>

               <div class="col-sm-12">
                <div id="myProgress" class="progress">
                  <div id="myBar" class="bar progress-bar" role='progressbar'>  
                  </div>
                </div>
              </div>        
      </div>
    </div>
  </div>
  <div class="modal-footer">
    <?=form_reset('reset','Reset',['class'=>'btn btn-md btn-primary'])?>
    <?=form_submit('submit','Post',['class'=>'btn btn-md btn-success'])?>
  </div>
<?=form_close()?>

model:

public function store_news($array)
{
    return $this->db->insert('tbl_news', $array);
}

Upvotes: 2

Views: 231

Answers (4)

Pratap Tomar
Pratap Tomar

Reputation: 21

function upload_add($name) { $this->load->helper('form'); $config['upload_path'] = 'upload/add_image/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '30000'; $config['max_width'] = '102400'; $config['max_height'] = '76800'; $this->load->library('upload', $config); $this->upload->initialize($config); if (!$this->upload->do_upload($name)) { $data = array('msg' => $this->upload->display_errors()); } else { $data = array('msg' => "success"); $databasea['upload_data'] = $this->upload->data(); $this->load->library('image_lib'); return $databasea['upload_data']['file_name']; } return ''; }

Upvotes: -1

krishna
krishna

Reputation: 98

You need to use multipart/form-data for file uploading. So use form_open_multipart instead of form_open.

echo form_open_multipart('Admin/add_news');

Upvotes: 1

Regolith
Regolith

Reputation: 2971

you are not using enctype='multipart/form-data' try this

<?=form_open_multipart('Admin/add_news',['class'=>'form'],['aid'=>$this->session->userdata('adminId')])?>

Upvotes: 2

B. Desai
B. Desai

Reputation: 16436

You need to use form_open_multipart instead of form_open so that enctype can be added in form

Change

<?=form_open('Admin/add_news',['class'=>'form'],['aid'=>$this->session->userdata('adminId')])?>

to:

<?=form_open_multipart('Admin/add_news',['class'=>'form'],['aid'=>$this->session->userdata('adminId')])?>

Upvotes: 1

Related Questions