如何修复上传文件的不需要的双重副本?

My code is running fine and adding the files correctly but it is adding one additional copy of uploaded file. What is wrong?

My controller is like this:

public function add_audio(){

            $config['upload_path'] = './musics/';
            $config['allowed_types'] = 'mp3';
            $config['max_size'] = '999999999999999999999';

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



    if ( ! $this->upload->do_upload())
        {
            $data['error'] = $this->upload->display_errors();
            print_r($data['error']);    
            //line of codes that displays if there are errors
        }
    else
    {
        $data['audio'] = $_FILES['userfile']['name'];

        $this->load->model('main');
        $query = $this->main->insert('audio',$data);

        if($query == TRUE){
            $this->load->view('admin/success');
        }
    }

... but it is adding one additional copy of uploaded file. What is wrong?

That's because you're calling do_upload() twice...

public function add_audio() 
{
    ....

    $this->upload->do_upload(); // <- FIRST upload (remove this one)

    if ( ! $this->upload->do_upload() ) // <- SECOND upload
    {
        ....

Since you may need the conditional logic that handles upload failures, delete the first instance of do_upload().