2011-10-24 67 views
0

我想上載3張圖片並在每次上傳圖片時調整它們的大小我正在將圖片名稱放入數組images,但是在方法結束時,我只有print_r($images)上傳的最後一張圖片的名稱,誰能告訴我這是爲什麼?codeigniter多次上傳

這裏是我的代碼,

// lets get rid of any old configs 
        $secondaryConfig['upload_path'] = './media/uploads/news/'; 
        $secondaryConfig['allowed_types'] = 'gif|jpg|png'; 
        $secondaryConfig['max_size'] = '4000'; 
        $secondaryConfig['max_width'] = '230'; 
        $secondaryConfig['max_height'] = '120'; 

        $secondaryManipulationConfig['image_library'] = 'gd2'; 
        $secondaryManipulationConfig['create_thumb'] = FALSE; 
        $secondaryManipulationConfig['maintain_ratio'] = TRUE; 
        $secondaryManipulationConfig['width'] = 132; 
        $secondaryManipulationConfig['height'] = 80; 


        //image_1 
        $this->upload->initialize($secondaryConfig); 
        if (!$this->upload->do_upload('image_1')) 
        { 
         $data['error_image_1'] = $this->upload->display_errors(); 
         $this->template->build('admin/news/edit', $data); 
         return; 
        } 
        else 
        { 
         $image = $this->upload->data(); 
         $images[] = $image['file_name']; 

         $this->image_lib->initialize($secondaryManipulationConfig); 
         $secondaryManipulationConfig['source_image'] = './media/uploads/news/'.$image['file_name']; 
         if (!$this->image_lib->resize()) 
         { 
          $data['error_image_1'] = $this->image_lib->display_errors(); 
          $this->template->build('admin/news/edit', $data); 
          return; 
         } 
        } 


        $this->upload->initialize($secondaryConfig); 

        if (!$this->upload->do_upload('image_2')) 
        { 
         $data['error_image_2'] = $this->upload->display_errors(); 
         $this->template->build('admin/news/edit', $data); 
         return; 
        } 
        else 
        { 
         $image = $this->upload->data(); 
         $images[] = $image['file_name']; 

         $this->image_lib->initialize($secondaryManipulationConfig); 
         $secondaryManipulationConfig['source_image'] = './media/uploads/news/'.$image['file_name']; 
         if (!$this->image_lib->resize()) 
         { 
          $data['error_image_2'] = $this->image_lib->display_errors(); 
          $this->template->build('admin/news/edit', $data); 
          return; 
         } 
        } 

        //image_3 
        $this->upload->initialize($secondaryConfig); 
        if (!$this->upload->do_upload('image_3')) 
        { 
         $data['error_image_3'] = $this->upload->display_errors(); 
         $this->template->build('admin/news/edit', $data); 
         return; 
        } 
        else 
        { 
         $image = $this->upload->data(); 
         $images[] = $image['file_name']; 

         $this->image_lib->initialize($secondaryManipulationConfig); 
         $secondaryManipulationConfig['source_image'] = './media/uploads/news/'.$image['file_name']; 
         if (!$this->image_lib->resize()) 
         { 
          $data['error_image_3'] = $this->image_lib->display_errors(); 
          $this->template->build('admin/news/edit', $data); 
          return; 
         } 
        } 
+0

我有同樣的問題的種類。我通過上傳完整大小的圖片解決了這個問題,並在確定上傳後調整大小(使用'copy'或'move_uploaded_file') – Aif

+0

爲什麼你要靜態地爲每個文件初始化你的上傳器?你不應該!使用[本指南](http://codeigniter.com/user_guide/libraries/file_uploading.html)並更正您的代碼。 – user973254

回答

1

好友我不知道你是如何寫的HTML,但嘗試下面的示例代碼。您可以創建一個test.php文件來檢查演示,然後您可以根據需要在代碼中複製邏輯。

<?php 
    if($_POST) 
    { 
     print "<pre>";print_r($_FILES);print "</pre>"; 
    } 
?> 
<form name="frm" method="post" enctype="multipart/form-data"> 
File1 : <input type="file" name="images[]" id="images[]"/> <br> 
File2 : <input type="file" name="images[]" id="images[]"/> <br> 
File3 : <input type="file" name="images[]" id="images[]"/> <br> 
<input type="submit" name="Submit" /> 
</form> 

和輸出會像

Array 
(
    [images] => Array 
     (
      [name] => Array 
       (
        [0] => Chrysanthemum.jpg 
        [1] => Desert.jpg 
        [2] => Tulips.jpg 
       ) 
      [type] => Array 
       (
        [0] => image/jpeg 
        [1] => image/jpeg 
        [2] => image/jpeg 
       ) 
      [tmp_name] => Array 
       (
        [0] => C:\wamp\tmp\phpE961.tmp 
        [1] => C:\wamp\tmp\phpE971.tmp 
        [2] => C:\wamp\tmp\phpE972.tmp 
       ) 
      [error] => Array 
       (
        [0] => 0 
        [1] => 0 
        [2] => 0 
       ) 
      [size] => Array 
       (
        [0] => 879394 
        [1] => 845941 
        [2] => 620888 
       ) 
     ) 
)