代码适用于图像,但不适用于codeigniter中的其他文件


Code works for image but not for other files in codeigniter

我成功地将图像上传到了文件夹中,并将其名称上传到了数据库中,但相同的代码没有上传文件夹中的文件,而是上传了数据库中的名称。以下是我将音频文件上传到音乐文件夹的代码。

控制器功能

public function add_audio(){
        $config['upload_path'] = './musics/';
        $config['allowed_types'] = 'mp3';
        $config['max_size'] = '100000000000000';
        $this->load->library('upload',$config);
        chmod('musics/', 0777);
        $this->upload->do_upload('output');
        $data['audio'] = $_FILES['output']['name'];
        $this->load->model('main');
        $query = $this->main->insert('audio',$data);            
        if($query = TRUE){
            $this->load->view('admin/success');
        }
        else{
            redirect($_SERVER['HTTP_REFERER']);
        }   //end else
    }   //end function

尝试从$this->upload->do_upload('output'); 中删除'output'

并尝试用以下代码替换您的代码部分:

if ( ! $this->upload->do_upload())
{
    $data['error'] = $this->upload->display_errors();    
    //line of codes that displays if there are errors
}
else
{
    $data['audio'] = $_FILES['output']['name'];
    $this->load->model('main');
    $query = $this->main->insert('audio',$data);
    if($query == TRUE){
        $this->load->view('admin/success');
    }
}

在上面的代码中,您指定了

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

由于这是一个比较,而不是分配,因此应将其更正为

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

通过其他文件格式检查它,无论您是否通过:

print_r($_FILES);

并且在if条件中使用=而不是==

试试这个:

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