3

Post_plot.php (This is my view form)

<form action="http://localhost:8080/ci/admin/plot/do_upload" enctype="multipart/form-data" method="post">

<input type="text" name="property_title" value=""  />

<input type="file" name="img" id="plot-img" value=""  />

<input type="submit" name="submit" value="Submit" />

</form> 

I have a long form with an image upload option.

I am using do_upload function to upload file

I am getting following error

Array ( [name] => a.jpg [type] => image/jpeg [tmp_name] => C:\xampp\tmp\phpBD75.tmp [error] => 0 [size] => 132277 ) Array ( [error] =>
You did not select a file to upload.

)

Plot.php Controller

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Plot extends CI_Controller {


    public function __construct()
    {
        parent::__construct();
        $this->load->library('Admin_layout');
        $this->load->model('admin/plot_model');
        $this->config->load('plot_rules');
        $this->output->enable_profiler(TRUE);
    }


    public function do_upload()
    {
            $config['upload_path']          = '../images/';
            $config['allowed_types']        = 'gif|jpg|png';
            $config['max_size']             = 100;
            $config['max_width']            = 1024;
            $config['max_height']           = 768;

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

            if ( ! $this->upload->do_upload($img))
            {
                    $error = array('error' => $this->upload->display_errors());

                    print_r($error);
            }
            else
            {
                    $data = array('upload_data' => $this->upload->data());

                    //$this->load->view('upload_success', $data);
                    print_r($data);
            }
    }//do_upload


}//class

Should i pass any parameters in do_upload function?

1 Answer 1

4

In this part try to put the

$img = "img" // input name="img"
$this->upload->do_upload($img)

If not try / test with form action="http://localhost:8080/ci/admin/plot/do_upload"

Codeigniter 2 User Guide http://www.codeigniter.com/userguide2/libraries/file_uploading.html

Codeigniter 3 User Guide http://www.codeigniter.com/user_guide/libraries/file_uploading.html?highlight=file%20upload

You may need to set some routes in your route.php

Code

<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Plot extends CI_Controller {

public function __construct()
{
    parent::__construct();
    $this->load->library('Admin_layout');
    $this->load->model('admin/plot_model');
    $this->config->load('plot_rules');
    $this->output->enable_profiler(TRUE);
}

public function index() {
   $this->load->view('upload_form', array('error' => ' ' ));
}

public function do_upload()
{
        $config['upload_path'] = './images/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size']  = 100;
        $config['max_width']  = 1024;
        $config['max_height'] = 768;

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

        $img = "img";

        if ( ! $this->upload->do_upload($img))
        {
                $error = array('error' => $this->upload->display_errors());
                $this->load->view('upload_form', $error);

                print_r($error);
        }
        else
        {
                $data = array('upload_data' => $this->upload->data());

                $field_data = $this->upload->data();

                echo $field_data['file_name']; // etc 

                $this->load->view('upload_success', $data);
                print_r($data);
        }
}
}
Sign up to request clarification or add additional context in comments.

3 Comments

yes now its fine , but it says The upload path does not appear to be valid. my images folder is in project root directory --application --images --system
Instead of $config['upload_path] = '../images/'; have to many .. try $config['upload_path] = './images/'; as what user guide has images directory should be in main directory
I also added field data in case you need to add names to database

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.