0

How to specify more than one configuration in config/upload.php ?

2 Answers 2

4

I think that it's not posible to do it, the manual says:

Setting preferences in a config file

If you prefer not to set preferences using the above method, you can instead put them into a config file. Simply create a new file called the upload.php, add the $config array in that file. Then save the file in: config/upload.php and it will be used automatically. You will NOT need to use the $this->upload->initialize function if you save your preferences in a config file.

So you're adding to the $config array() without any key to auto-initialize. Probably will be better to make a config file and load it with your config params like:

$config['upload_1']['upload_path'] = './uploads/';
$config['upload_1']['allowed_types'] = 'gif|jpg|png';
$config['upload_1']['max_size'] = '100';
$config['upload_1']['max_width']  = '1024';
$config['upload_1']['max_height']  = '768';

And loading later in your Controller with:

$this->load->config('upload_vals', TRUE);

$upload_vals = $this->config->item('upload_1');

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

Wish it helps!

Sign up to request clarification or add additional context in comments.

Comments

0

Here's another way.

application/config/upload.php

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

$config = array(
    'member_photo' => array(
        'upload_path'   => './uploads/member_photos/',
        'allowed_types' => 'gif|jpeg|jpg|png',
        'max_size'      => '0',
        'max_width'     => '0',
        'max_height'    => '0',
        'encrypt_name'  => true
    ),
    'pet_photo' => array(
        'upload_path'   => './uploads/pet_photos/',
        'allowed_types' => 'gif|jpeg|jpg|png',
        'max_size'      => '0',
        'max_width'     => '0',
        'max_height'    => '0',
        'encrypt_name'  => true
    ),
);

application/libraries/MY_Upload.php

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

class MY_Upload extends CI_Upload
{

    function initialize($config = array())
    {
        // load config
        if(!empty($config['config']))
        {
            $CI =& get_instance();
            $CI->load->config('upload');
            $autoload_config = $CI->config->item($config['config']);

            if($autoload_config)
            {
                foreach($autoload_config as $key => $val)
                {
                    if(empty($config[$key]))
                    {
                        $config[$key] = $val;
                    }
                }
            }

            unset($config['config']);
        }

        parent::initialize($config);
    }

}

Then in your controller; any extra keys you define will override those in the config file:

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

Comments

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.