Как загрузить файл с нескольких входов с помощью codeigniter
У меня есть три разных входных файла, и я хочу загрузить его из разных папок. Мои коды ниже прекрасно работают во время загрузки, но они идут только в одну папку, которая всегда находится в папке "org_chart".
Это из моего контроллера:
foreach ($_FILES as $key => $value) {
if ($key == "updated-org-chart") {
$config['allowed_types'] = 'pdf';
$config['upload_path'] = './assets/manpower_requisition/org_chart/';
$this->load->library('upload', $config);
$this->upload->do_upload($key);
}elseif ($key == "job-description") {
$config['allowed_types'] = 'pdf';
$config['upload_path'] = './assets/manpower_requisition/jd/';
$this->load->library('upload', $config);
$this->upload->do_upload($key);
}elseif ($key == "bsc") {
$config['allowed_types'] = 'pdf';
$config['upload_path'] = './assets/manpower_requisition/bsc/';
$this->load->library('upload', $config);
$this->upload->do_upload($key);
}
}
2 ответа
Решение
После долгих часов, потраченных на эту проблему, я нашел решение, которое решило бы мою проблему. Codeigniter не позволяет дважды вызывать класс с новым параметром, вместо этого он должен "повторно инициализировать" класс загрузки. Вот некоторые статьи, которые, похоже, совпадают с проблемой. Статьи по Теме
$config['allowed_types'] = 'pdf';
$this->load->library('upload', $config);
$this->upload->initialize($config);
$this->upload->do_upload($key);
Вы можете использовать конфигурацию, как показано ниже:
foreach ($_FILES as $key => $value) {
switch ($key) {
case 'updated-org-chart':
$config['upload_path'] = './assets/manpower_requisition/org_chart/';
break;
case 'job-description':
$config['upload_path'] = './assets/manpower_requisition/jd/';
break;
case 'bsc':
$config['upload_path'] = './assets/manpower_requisition/bsc/';
break;
default:
$config['upload_path'] = './assets/manpower_requisition/org_chart/';
break;
}
$config['allowed_types'] = 'pdf';
$this->load->library('upload', $config);
$this->upload->do_upload($key);
}