使用CodeIgniter的類庫(kù)做圖片上傳

2013-04-02 17:35:49來(lái)源:簡(jiǎn)明現(xiàn)代魔法作者:

CodeIgniter 的文件上傳類允許文件被上傳。您可以設(shè)置指定上傳某類型的文件及指定大小的文件。

CodeIgniter 的文件上傳類允許文件被上傳。您可以設(shè)置指定上傳某類型的文件及指定大小的文件。

上傳文件普遍的過程:

  • 一個(gè)上傳文件用的表單,允許用戶選擇一個(gè)文件并上傳它。
  • 當(dāng)這個(gè)表單被提交,該文件被上傳到指定的目錄。
  • 同時(shí),該文件將被驗(yàn)證是否符合您設(shè)定的要求。
  • 一旦文件上傳成功,還要返回一個(gè)上傳成功的確認(rèn)窗口。

下面是表單:

<form method="post" action="<?=base_url()?>admin/img_upload/" enctype="multipart/form-data" />
 <div style="margin:0 0 0.5em 0em;">
  <input type="file" name="userfile" size="20" class="button" />
  <input type="submit" value=" 上傳 " class="button" />
 </div>
</form>

然后是下面是上傳類:

public function img_upload()
{
 $this->load->helper('url');
 
 $config['upload_path'] = './images/'.date('Ym', time()).'/';
 $config['allowed_types'] = 'gif|jpg|png';
 $config['file_name'] = date('Y_m_d', time()).'_'.sprintf('%02d', rand(0,99));
 $config['max_size'] = '500';
 $config['max_width']  = '1024';
 $config['max_height']  = '768';
 
 $this->load->library('upload', $config);
 
 if ( !$this->upload->do_upload())
   {
     $error = array('error' => $this->upload->display_errors());
   }
 else
   {
     $data = array('upload_data' => $this->upload->data());
   }
}

偏好設(shè)置參數(shù)

偏好設(shè)置 默認(rèn)值 選項(xiàng) 描述
upload_path None None 文件上傳路徑。該路徑必須是可寫的,相對(duì)路徑和絕對(duì)路徑均可以。
allowed_types None None 允許上傳文件的MIME類型;通常文件擴(kuò)展名可以做為MIME類型. 允許多個(gè)類型用豎線‘|’分開
file_name None 想要使用的文件名

如果設(shè)置了這個(gè)參數(shù),CodeIgniter 將根據(jù)這里設(shè)置的文件名來(lái)對(duì)上傳的文件進(jìn)行重命名。文件名中的擴(kuò)展名也必須是允許的文件類型。

overwrite FALSE TRUE/FALSE (boolean) 是否覆蓋。該參數(shù)為TRUE時(shí),如果上傳文件時(shí)碰到重名文件,將會(huì)把原文件覆蓋;如果該參數(shù)為FALSE,CI將會(huì)在新文件的文件名后面加一個(gè)數(shù)字。If set to true, if a file with the same name as the one you are uploading exists, it will be overwritten. If set to false, a number will be appended to the filename if another with the same name exists.
max_size 0 None 允許上傳文件大小的最大值(以K為單位)。該參數(shù)為0則不限制。注意:通常PHP也有這項(xiàng)限制,可以在php.ini文件中指定。通常默認(rèn)為2MB。
max_width 0 None 上傳文件的寬度最大值(像素為單位)。0為不限制。
max_height 0 None 上傳文件的高度最大值(像素為單位)。0為不限制。
max_filename 0 None 文件名的最大長(zhǎng)度。0為不限制。
encrypt_name FALSE TRUE/FALSE (boolean) 是否重命名文件。如果該參數(shù)為TRUE,上傳的文件將被重命名為隨機(jī)的加密字符串。當(dāng)你想讓文件上傳者也不能區(qū)分自己上傳的文件的文件名時(shí),是非常有用的。當(dāng) overwrite 為 FALSE 時(shí),此選項(xiàng)才起作用。
remove_spaces TRUE TRUE/FALSE (boolean) 參數(shù)為TRUE時(shí),文件名中的空格將被替換為下劃線。推薦使用。

幾個(gè)用到的函數(shù)

  • $this->upload->do_upload():根據(jù)你的偏好配置參數(shù)執(zhí)行操作。注意:默認(rèn)情況下上傳的文件來(lái)自于提交表單里名為userfile的文件域,并且該表單必須是 "multipart"類型。
  • $this->upload->display_errors():如果do_upload()返回失敗,顯示錯(cuò)誤信息。此函數(shù)不會(huì)自動(dòng)輸出,而是返回?cái)?shù)據(jù),所以你可以按你的要求安排。
  • $this->upload->data():這是一個(gè)輔助函數(shù),它返回你上傳文件的所有相關(guān)信息的數(shù)組。

 

關(guān)鍵詞:CodeIgniter

贊助商鏈接: