Код работает для изображения, но не для других файлов в 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

0

Решение

Попробуйте удалить 'output' от $this->upload->do_upload('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');
}
}
0

Другие решения

В приведенном выше коде вы указали

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

Поскольку это сравнение, а не задание, это следует исправить как

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

Проверьте это по другим форматам файлов, независимо от того, получаете ли вы:

print_r($_FILES);

и вы используете = вместо == в случае если.

попробуй это:

    if($query = TRUE){

$this->load->view('admin/success');
}
0