Попытка загрузить несколько файлов в codeigniter. Получение do_upload ожидает ошибки в массиве при данной ошибке

Я пытаюсь загрузить несколько файлов в CodeIgniter. Но я получаю ниже предупреждение и ошибку

A PHP Error was encountered

Severity: Warning

Message: is_uploaded_file() expects parameter 1 to be string, array given

Filename: libraries/Upload.php
Error: You did not select a file to upload.

Вот мой контроль формы загрузки файла:

<input type="file" accept="image/png, image/jpeg, image/gif, application/pdf, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, text/plain, application/pdf" name="file[]" multiple/>

Моя функция контроллера
Здесь $ file — это имя загружаемого файла, который я передаю этой функции file_upload () из другой функции.

public function file_upload($file){
$new_file = "";
$original_file_name = '';
if($file!=""){
$file_name = $file;
$original_file_name = $file_name;
$random = rand(1, 10000000000000000);
$makeRandom = hash('sha512', $random.$this->input->post('title') . config_item("encryption_key"));
$file_name_rename = $makeRandom;
$explode = explode('.', $file_name);
if(count($explode) >= 2) {
$new_file = $file_name_rename.'.'.$explode[1];
$config['upload_path'] = "./uploads/images";
$config['allowed_types'] = "gif|jpg|png|jpeg|pdf|doc|xml|docx|GIF|JPG|PNG|JPEG|PDF|DOC|XML|DOCX|xls|xlsx|txt|ppt|csv";
$config['file_name'] = $new_file;
$config['max_size'] = '3072';
$config['max_width'] = '3000';
$config['max_height'] = '3000';
$this->load->library('upload',$config);
$this->upload->initialize($config);
if(!$this->upload->do_upload("file")) {
print_r($this->upload->display_errors());
} else {

echo "success";}
} else {
//error
}
}else{
//some code here
}}

0

Решение

imho ваш код не имеет никакого смысла — но главная проблема здесь — вы должны изменить _FILES массив

Нечто подобное должно работать

public function file_upload()
{
$strInputFileName = "file";
$arrFiles = $_FILES;

$config['upload_path'] = "./uploads/images";
$config['allowed_types'] = "gif|jpg|png|jpeg|pdf|doc|xml|docx|GIF|JPG|PNG|JPEG|PDF|DOC|XML|DOCX|xls|xlsx|txt|ppt|csv";
$config['file_name'] = $new_file;
$config['max_size'] = '3072';
$config['max_width'] = '3000';
$config['max_height'] = '3000';
$config['file_name'] = $this->getRandomFileName();

if (is_array($_FILES[$strInputFileName]['name']))
{
$countFiles = count($_FILES[$strInputFileName]['name']);
for($i=0;$i<$countFiles; $i++)
{
//overwrite _FILES array
$_FILES[$strInputFileName]['name'] = $arrFiles[$strInputFileName]['name'][$i];
$_FILES[$strInputFileName]['type'] = $arrFiles[$strInputFileName]['type'][$i];
$_FILES[$strInputFileName]['tmp_name'] = $arrFiles$strInputFileName]['tmp_name'][$i];
$_FILES[$strInputFileName]['error'] = $arrFiles[$strInputFileName]['error'][$i];
$_FILES[$strInputFileName]['size'] = $arrFiles[$strInputFileName]['size'][$i];
$this->upload->initialize($config);
if(!$this->upload->do_upload($strInputFileName))
{
print_r($this->upload->display_errors());
}
else
{
echo "success";
}
}
}
else
{
$this->upload->initialize($config);
if(!$this->upload->do_upload($strInputFileName))
{
print_r($this->upload->display_errors());
}
else
{
echo "success";
}
}
}

private function getRandomFileName()
{
$random = rand(1, 10000000000000000);
return hash('sha512', $random.$this->input->post('title') . config_item("encryption_key"));
}
2

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector