非常實用的PHP文件上傳類
時間:2012-10-14 23:24 | 來源:德曼PHP | 作者:德曼PHP培訓組
非常實用的PHP文件上傳類
上傳文件:
<?php
/**
* author : PHP100.com
* date :2012-9-15 經典的文件上傳類
**/
if(!empty($_POST['sub'])){
include("up.class.php");
$up = new up($_FILES['up']);
//參數,文件流必選,【指定目錄,指定大小,指定文件名】可選
}
?>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="up">
<input type="submit" name="sub" value="上傳">
</form>
上傳類:
<?php
/**
* author : PHP100.com
* date :2012-9-15 經典的文件上傳類
**/
class up {
public $f_size;//定義的文件大小
public $f_sys;//接收文件屬性
public $f_name;//自定義的文件名
public $f_dir;//自定義上傳目錄
//參數:文件流,目錄,大小,文件名
function __construct($sys,$dir="",$size="1",$name=""){
$this->f_size=$size*1000000;
$this->f_sys=$sys;
$this->f_name=$name;
$this->f_dir=$dir;
$this->f_mv();
}
//判斷文件大小
function is_size(){
if($this->f_sys['size']<=$this->f_size){
return true;
}else{
return false;
}
} //end
//判斷文件類型,返回擴展名
function is_type(){
switch($this->f_sys['type']){
case "image/x-png": $ok=".png";
break;
case "image/png": $ok=".png";
break;
case "application/pdf": $ok=".pdf";
break;
case "image/pjpeg": $ok=".jpg";
break;
case "image/jpeg": $ok=".jpg";
break;
case "image/jpg": $ok=".jpg";
break;
default: $ok=false;
break;
}
return $ok;
}
//終止函數
function f_over($n){
echo $n;
exit();
}
//判斷文件夾是否存在,并創建
function is_dirs(){
if($this->f_dir){
if(!is_dir($this->f_dir)){
mkdir($this->f_dir);
}
return $this->f_dir;
}else{
if(!is_dir(date("Ymd"))){
mkdir(date("Ymd"));
}
return date("Ymd");
}
}
//文件名的定義,不定義而使用時間戳
function is_name(){
if($this->f_name){
$fn=$this->f_name.$this->is_type();
}else{
$fn=time().rand(100,999).$this->is_type();
}
return $this->is_dirs()."/".$fn;
}
//上傳文件
function f_mv(){
$this->is_size()?null:$this->f_over("文件超過大小");
$this->is_type()?null:$this->f_over("文件類型不正確");;
move_uploaded_file($this->f_sys['tmp_name'],$this->is_name());
}
//請繼續完善,水印,等等
}
?>
關鍵詞:
非常實用的PHP文件上傳類