iLeichun

当前位置: 首页 > 个人日志

PHP文件上传类

分类:个人日志   来源:原创   时间:2011-01-20 23:27:50

<?php

/**
 *
 * @name 文件管理类
 * @author lession
 *
 */

class File{
 //上传文件大小,以字节记
 var $fileSize;
 
 //上传文件类型,对于IE,识别jpg文件的类型必须是pjpeg,对于 FireFox,必须是jpeg。
 var $fileType;
 
 //上传文件名称
 var $fileName;
 
 //上传文件临时存储位置
 var $fileTemp;
 
 //由文件上传引发的错误代码
 var $fileError;

 /**
  * @name 构造函数
  */
 function File(){
  $this->fileName=$_FILES["file"]["name"];
  $this->fileType=$_FILES["file"]["type"];
  $this->fileSize=$_FILES["file"]["size"];
  $this->fileTemp=$_FILES["file"]["tmp_name"];
  $this->fileError=$_FILES["file"]["error"];
 }

 /**
  * @name 文件上传,只能是图片
  * @param $headFileName 上传文件待命名名称前缀,如20100331101126_21136.gif中的20100331101126
  * @param $fileSize 上传文件大小限制,以kb计
  * @param $dir 上传文件存放目录
  * @return $newFileName
  */
 function uploadFile($headFileName,$fileSize,$dir){
  $fileType1="image/gif";
  $fileType2="image/jpeg";
  $fileType3="image/pjpeg";
  $fileType4="image/x-png";
  //没有选择文件
  if ($this->fileName==NULL){
   //表单中没有选择文件
   if ($this->fileError==4){
    echo "<script>alert(¹Choose a picture,please!¹);</script>";
    return ;
   }
   //刚点击链接
   else{
    //echo "I¹m dead2!";
    return ;
   }
  }
  //已选择文件
  else {
   switch ($this->fileError){
    //文件大小超过了php.ini里面允许的大小
    case 1:
     echo "<script>alert(¹The size of picture must be less than 1M!¹);</script>";
     return ;
     break;
    case 3:
     echo "<script>alert(¹Error!¹);</script>";
     return ;
     break;
    default:
     if(!($this->fileType== $fileType1||$this->fileType==$fileType2||$this->fileType==$fileType3||$this->fileType==$fileType4)){
      echo "<script>alert(¹Only for *.jpg,*.jpeg,*.gif or *.png!¹);</script>";
      return ;
     }
     if(($this->fileSize/1024>$fileSize)){
      echo "<script>alert(¹The size of picture must be less than 1M!¹);</script>";
      return ;
     }else{
           $newFileName=$this->fileType==$fileType1?$headFileName."_".rand(1000,99999).".gif":($this->fileType==$fileType4?$headFileName."_".rand(1000,99999).".png":$headFileName."_".rand(1000,99999).".jpg");
         /*echo "文件名: ".$this->fileName."<br />";
         echo "文件类型: ".$this->fileType."<br />";
         echo "文件大小: ".($this->fileSize/1024)." Kb<br />";
         echo "存储临时目录: ".$this->fileTemp."<br />";*/
         if (file_exists($newFileName)){
              echo "<script>alert(¹Picture upload fail!¹);</script> ";
              return ;
           }else{
            //echo $newFileName."<br>";
            move_uploaded_file($this->fileTemp,$dir.$this->fileName);
           rename($dir.$this->fileName,$dir.$newFileName);
            //echo "存储目录: ".$dir.$newFileName;
            //echo "<script>alert(¹照片上传成功!¹);</script>";
            return $newFileName;
           }
     }
   }//switch结束
  }
 }//function uploadFile($fileSize,$dir)结束
 
 /**
  * @name 大文件上传,不能是图片
  * @param $headFileName 上传文件待命名名称前缀,如20100331101126_21136.gif中的20100331101126
  * @param $fileSize 上传文件大小限制,以kb计
  * @param $dir 上传文件存放目录
  * @return $newFileName
  */
 function uploadBigFile($headFileName,$fileSize,$dir){
  //没有选择文件
  if ($this->fileName==NULL){
   //表单中没有选择文件
   if ($this->fileError==4){
    echo "<script>alert(¹Choose a file,please!¹);</script>";
    return ;
   }
   //刚点击链接
   else{
    //echo "I¹m dead2!";
    return ;
   }
  }
  //已选择文件
  else {
   switch ($this->fileError) {
    //文件大小超过了php.ini里面允许的大小
    case 1:
     echo "<script>alert(¹The size of picture must be less than ".($fileSize/1024)."M!¹);</script>";
     return ;
     break;
    case 3:
     echo "<script>alert(¹Error!¹);</script>";
     return ;
     break;
    default:
     if(($this->fileSize/1024>$fileSize)){ 
      echo "<script>alert(¹The size of picture must be less than ".($fileSize/1024)."M!¹);</script>";
      return ;
     }else{
           $newFileName=$headFileName."_".rand(1000,99999).".".mb_substr($this->fileName,strrpos($this->fileName,".")+1,3,"utf8");
         /*echo "文件名: ".$this->fileName."<br />¹;
         echo "文件类型: ".$this->fileType."<br />";
         echo "文件大小: ".($this->fileSize/1024)." Kb<br />";
         echo "存储临时目录: ".$this->fileTemp."<br />";*/
         if (file_exists($newFileName)){
              echo "<script>alert(¹file onload fail!¹);</script> ";
              return ;
           }else{
            //echo $newFileName."<br>";
            move_uploaded_file($this->fileTemp,$dir.$this->fileName);
           rename($dir.$this->fileName,$dir.$newFileName);
            //echo "存储目录: ".$dir.$newFileName;
            //echo "<script>alert(¹照片上传成功!¹);</script>";
            return $newFileName;
           }
     }
   }//switch结束
  }
 }//function uploadBigFile($fileSize,$dir)结束

 /**
  * @name 文件修改
  * @param $headFileName 上传文件待命名名称前缀,如20100331101126_21136.gif中的20100331101126
  * @param $dir
  * @param $fileName
  * @param $fileSize
  */
 function updateFile($headFileName,$dir,$fileName,$fileSize) {
  //先删除原文件
  $this->deleteFile($dir,$fileName);
  //再新增文件
  $newFileName=$this->uploadFile($headFileName,$fileSize,$dir);
  return $newFileName;
 }

 /**
  * @name 文件删除
  * @param $fileName 要删除的文件名
  */
 function deleteFile($dir,$fileName) {
  if (file_exists($dir.$fileName))
   unlink($dir.$fileName);
  else
   echo "No such file!";
 }
 
}

?>

更多