2010-09-06 164 views
2

我正在構建一個應用程序,需要將上傳的文件放在單獨的目錄中以獲得縮略圖和全圖像。但$ config ['upload_path'] ='./uploads/';只允許我選擇一個上傳路徑。 如何定義兩個或更多上傳路徑?Codeigniter多個文件上傳路徑

回答

11

其實你只需要「重新初始化」上傳類。 Codeigniter不允許您使用新參數兩次調用該類(它忽略第二個請求),但是您可以通知該類手動加載新參數。這裏有最基礎的:(注意行「$這個 - > upload->初始化($配置)」這是關鍵

// this is for form field 1 which is an image.... 
$config['upload_path'] = './uploads/path1'; 
$config['allowed_types'] = 'gif|jpg|png'; 
$config['max_size'] = '100'; 
$config['max_width'] = '1024'; 
$config['max_height'] = '768'; 
$this->upload->initialize($config); 
$this->upload->do_upload($fieild_1); 

// this is for form field 2 which is a pdf 
$config['upload_path'] = './pdfs/path2'; 
$config['allowed_types'] = 'pdf'; 
$config['max_size'] = '300'; 
$this->upload->initialize($config); 
$this->upload->do_upload($fieild_2); 

我寫了一整篇文章大約在這裏: http://taggedzi.com/articles/display/multiple-file-uploads-using-codeigniter

您可以更改第二個初始化腳本中的任何允許參數,以便第二個文件可以完全不同化妝。您可以根據需要多次重複初始化每種文件類型。甚至可以設置一個配置陣列,並通過循環,如果你喜歡...)

希望這會有所幫助。

+0

感謝您的解釋。 – Kumar 2011-07-27 07:06:36

-1

簡短的(和令人失望的)答案是:CodeIgniter的文件上傳類被設計爲接受每個表單上傳1個文件。

長的答案是somewhere around here

0

你在這裏混淆了兩個問題。您需要將問題進一步分解爲離散任務。

首先,您需要設置適當的上傳目錄。在我的網站,每個用戶被定向到自己的上傳目錄:

/images/member/1 
/images/member/2 
/images/member/3 

我控制器動態設置上傳目錄,基於用戶ID

$config['upload_path'] = "/images/member/$user_id"; 

其次,你需要處理您上傳的文件,創建調整大小和縮略圖圖像。我的圖像處理庫使用,我通過把$ config [「upload_path」]作爲它的根目錄相同的路徑,其輸出放到相對於動態根子目錄:

/images/member/1/resized 
/images/member/1/thumbnails 

我的網站實際上是多一點比那複雜。但關鍵是,動態設置$ config ['upload_path']可以讓您擁有儘可能多的上傳路徑。

+0

非常好,謝謝! – pigfox 2010-09-13 15:39:36