PHP100精華:PHP上傳類支持縮略圖

  實例:

  1、創建文件upfile.php,代碼如下<!–p

  //如果收到表單傳來的參數,則進行上傳處理,否則顯示表單

  if(isset($_FILES[uploadinput])){

  //建目錄函數,其中參數$directoryName最後沒有"/",

  //要是有的話,以/打散為數組的時候,最後將會出現一個空值

  function makeDirectory($directoryName) {

  $directoryName = str_replace("\","/",$directoryName);

  $dirNames = explode(/, $directoryName);

  $total = count($dirNames) ;

  $temp = ;

  for($i=0; $i<$total; $i++) {

  $temp .= $dirNames[$i]./;

  if (!is_dir($temp)) {

  $oldmask = umask(0);

  if (!mkdir($temp, 0777)) exit("不能建立目錄 $temp");

  umask($oldmask);

  }

  }

  return true;

  }

  if($_FILES[uploadinput][name] <> ""){

  //包含上傳文件類

  require_once (class_upload.php);

  //設置文件上傳目錄

  $savePath = "upload";

  //創建目錄

  makeDirectory($savePath);

  //允許的文件類型

  $fileFormat = array(gif,jpg,jpge,png);

  //文件大小限制,單位: Byte,1KB = 1000 Byte //aiwalls.com

  //0 表示無限制,但受php.ini中upload_max_filesize設置影響

  $maxSize = 0;

  //覆蓋原有文件嗎? 0 不允許 1 允許

  $overwrite = 0;

  //初始化上傳類

  $f = new clsUpload( $savePath, $fileFormat, $maxSize, $overwrite);

  //如果想生成縮略圖,則調用成員函數 $f->setThumb();

  //參數列表: setThumb($thumb, $thumbWidth = 0,$thumbHeight = 0)

  //$thumb=1 表示要生成縮略圖,不調用時,其值為 0

  //$thumbWidth 縮略圖寬,單位是像素(px),留空則使用默認值 130

  //$thumbHeight 縮略圖高,單位是像素(px),留空則使用默認值 130

  $f->setThumb(1);

  //參數中的uploadinput是表單中上傳文件輸入框input的名字

  //後面的0表示不更改文件名,若為1,則由系統生成隨機文件名

  if (!$f->run(uploadinput,0)){

  //通過$f->errmsg()隻能得到最後一個出錯的信息,

  //詳細的信息在$f->getInfo()中可以得到。

  echo $f->errmsg()."

";

  }

  //上傳結果保存在數組returnArray中。//aiwalls.com

  echo "

";

 

  print_r($f->getInfo());

  echo "

";

 

  }

  }else{

  ?>

  

 

  Send this file:
 

  
 

  
 

  
 

  
 

  

  2、創建文件class_upload.php,代碼如下

  <!–p

  class clsUpload{

  var $saveName;// 保存名

  var $savePath;// 保存路徑

  var $fileFormat = array(gif,jpg,doc,application/octet-stream);// 文件格式&MIME限定

  var $overwrite = 0;// 覆蓋模式

  var $maxSize = 0;// 文件最大字節

  var $ext;// 文件擴展名

  var $thumb = 0;// 是否生成縮略圖

  var $thumbWidth = 130;// 縮略圖寬

  var $thumbHeight = 130;// 縮略圖高

  var $thumbPrefix = "_";// 縮略圖前綴

  var $errno;// 錯誤代號

  var $returnArray= array();// 所有文件的返回信息

  var $returninfo= array();// 每個文件返回信息

  // 構造函數

  // @param $savePath 文件保存路徑

  // @param $fileFormat 文件格式限制數組

  // @param $maxSize 文件最大尺寸

  // @param $overwriet 是否覆蓋 1 允許覆蓋 0 禁止覆蓋

  function clsUpload($savePath, $fileFormat=,$maxSize = 0, $overwrite = 0) {

  $this->setSavepath($savePath);

  $this->setFileformat($fileFormat);

  $this->setMaxsize($maxSize);

  $this->setOverwrite($overwrite);

  $this->setThumb($this->thumb, $this->thumbWidth,$this->thumbHeight);

  $this->errno = 0;

  }

  // 上傳

  // @param $fileInput 網頁Form(表單)中input的名稱

  // @param $changeName 是否更改文件名

  function run($fileInput,$changeName = 1){

  if(isset($_FILES[$fileInput])){

  $fileArr = $_FILES[$fileInput];

  if(is_array($fileArr[name])){//上傳同文件域名稱多個文件

  for($i = 0; $i < count($fileArr[name]); $i++){

  $ar[tmp_name] = $fileArr[tmp_name][$i];

  $ar[name] = $fileArr[name][$i];

  $ar[type] = $fileArr[type][$i];

  $ar[size] = $fileArr[size][$i];

  $ar[error] = $fileArr[error][$i];

  $this->getExt($ar[name]);//取得擴展名,賦給$this->ext,下次循環會更新

  $this->setSavename($changeName == 1 ? : $ar[name]);//設置保存文件名

  if($this->copyfile($ar)){

  $this->returnArray[] = $this->returninfo;

  }else{

  $this->returninfo[error] = $this->errmsg();

  $this->returnArray[] = $this->returninfo;

  }

  }

  return $this->errno ? false : true;

發佈留言