2011-07-27 13 views
0

CodeIgniterでファイルの配列をアップロードするにはどうすればよいですか?私はユーザーが一度に複数のファイルをアップロードできるようにするフォームを持っています。私は、送信ボタンをクリックすると "ファイル[]"という余分なファイル入力フィールドを追加するJavaScriptコードを持っています。これは私がこれまで持っていたコードですが、display_errors関数でアップロードするファイルを選択していないと常に言います。あなたはファイルは、[1]、[0]、ファイルとファイルをアップロードされた第2ラインを使用している場合は...名前CodeIgniterでファイルの配列をアップロードするには?

<code> 
foreach($this->input->post('files') as $i => $file){ 
        $config = array( //Preferences to validate the image before uploading it 
         'upload_path' => './attachments', 
         'allowed_types' => 'jpg|gif|bmp', 
         'max_size' => '100', 
         'max_width' => '950', 
         'max_height' => '631', 
         'overwrite' => FALSE, 
         'encrypt_name' => TRUE, 
         'remove_spaces' => TRUE 
         ); 
        $this->load->library('upload', $config); 
        if($this->upload->do_upload('files['.$i.']')){ 
         echo $this->upload->file_data(); 
        } else { 
         echo $this->upload->display_errors('<li>', '</li>'); 
        } 
      } 
</code> 

答えて

0

代わり

   if($this->upload->do_upload('files['.$i.']')) { 

   if($this->upload->do_upload($files)) { 

を使用してください

$ file変数に格納されている現在のループの値がすでにあるので、それを直接使用できます。

2

このようにすることができます。お使いのコントローラで次に

<?php echo form_label('Image: ','userfile1');?> 
<?php echo form_upload('userfile1');?> 
<?php echo form_label('Image: ','userfile2');?> 
<?php echo form_upload('userfile2');?> 
<!-- and so on --> 

、これらのような何か...

//Set File Settings 
$config['upload_path'] = 'uploads/'; 
$config['allowed_types'] = 'jpg|png'; 
$config['remove_spaces'] = TRUE; 
$config['overwrite'] = TRUE; 
$config['max_size'] = '1024'; 
$config['max_width'] = '1024'; 
$config['max_height'] = '768'; 

$this->load->library('upload', $config); 

// Validate files for upload section... 
$success = array(); 
$errors = array(); 
$updload_files = array(
     'userfile1' => $_FILES['userfile1'], 
     'userfile2' => $_FILES['userfile2'], 
     // You can add more 
     ); 

foreach($updload_files as $field => $updload_file) 
{ 
    // Only process submitted file 
    if($updload_file['error'] == 0) 
    { 
     // If there is an error, save it to error var 
     if(! $this->upload->do_upload($field)) 
     { 
      $errors[] = 'Failed to upload '.$field; 
     } 

     // Use this to get the new file info if you need to insert it in a database 
     $success[] = array('Success to upload '.$field => $this->upload->data()); 
    } 
    else 
    { 
     $errors[] = $field . ' contain no data'; 
    } 
} 
// Heres you could gettin know whats happen 
var_dump($errors); 
var_dump($success); 
+0

だから私は、これはそれを行うための唯一の方法だと思います:あなたのビューで

。何個の入力が処理されるのか分かりますか? – ShoeLace1291

+0

シーケンス番号で入力の量を指定できます。あなたのビューとあなたのコントローラの両方のuserfile1、userfile2、userfile3 ... userfile100のようなものです。 – toopay

関連する問題