Проблемы с загрузкой файлов CodeIgniter и многомерными массивами - PullRequest
0 голосов
/ 28 июля 2011

Я пытаюсь создать форму, которая содержит эти многомерные массивы:

<input type="text" name="cost[1][desc]">
<input type="text" name="cost[1][price]">
<input type="file" name="cost[1][file]">
<input type="text" name="cost[2][desc]">
<input type="text" name="cost[2][price]">
<input type="file" name="cost[2][file]">

В каждом массиве 'cost' есть три входа: описание, цена и загрузка файла.Может быть несколько массивов 'cost' (вот почему я сделал второй параметр числом).В моей модели CodeIgniter у меня есть это:

foreach($_POST as $post => $array){                
  if($post=='cost') {             
    foreach($array as $number){ 
      foreach($number as $label => $value){
        if($label=='file'){
          $config['upload_path'] = './uploads/receipts';
          $config['allowed_types'] = 'gif|jpg|png|doc|docx|pdf';
          $config['max_size'] = '4096';
          if(!empty($value['name'])){
            $this->upload->initialize($config);
            if($this->upload->do_upload($label)){
              $file = $this->upload->data();
              $path = $file['file_name'];
            }
          }
        }
        $cost_array = array('desc'=>$number['desc'],'price'=>$number['price'],'file'=>$path);
        $price = number_format($number['price'],2);
      }
      $main_array[] = $cost_array;
      $main_price[] = $price; 
    }
  }  
}
$data['cost_info'] = serialize($cost_array);
$data['extra_cost'] = array_sum($price);
$this->db->insert('reports',$data);

Значения 'desc' и 'price' входят в массив (и сериализуются) вообще без проблем - но по какой-то причине я не могу получить какие-либоинформация о файлеЯ удалил много операторов if, чтобы понять, была ли это проблема, но это не так.Если я изменил входной HTML-тег файла так, чтобы его имя было «cost_1_file», и если я изменил модель PHP на:

if($this->input->post('cost_1_file')==''){
  echo 'Nope';
}

, он повторяет утверждение - это означает, что он не получает никаких данных о загрузке файласовсем.Я удостоверился, что моя форма form_open_multipart.Кто-нибудь знает, где я иду не так?

1 Ответ

2 голосов
/ 28 июля 2011

Загрузка файлов идет в $ _FILES вместо $ _POST

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...