天天看點

php圖檔上傳類 v1.0

花了兩天時間完成這個功能實作。

為此重新複習php面向對象有關知識,在類方法傳回值return這塊還是不太明白,以至于進行錯誤處理時耗費大量時間。

不說了,直接上代碼。圖我就不截了,大夥看吧

---------------------------------------------------------------

程式頁+表單送出

---------------------------------------------------------------

$upfile_url="../upfile/";//上傳路徑

$maxsize=ini_get('file_uploads') ? ini_get('upload_max_filesize') : 'Disabled';//擷取最大上傳大小

if(isset($_POST['sub'])=="sub")

{

include("../sys32/class/images.class.php");//引入images.class.php類檔案。檔案名自定

$objupload=new Upload;//執行個體化類對象

$upimg1=$_FILES['img_up'];//post方式擷取要上傳的檔案,img_up為input的name名

$uppath=$upfile_url."images/";//上傳路徑

$onoff=true;//是否需要上傳。如果上傳需預先設定,不上傳無需調用

$images=$objupload->Up_Images($onoff,$upimg1,$uppath,'images',$maxsize);//調用

//判斷傳回值是否包含‘錯誤代号’四字。包含說明:這是一段錯誤提示語句。不包含說明這是上傳後的檔案路徑

if(!strstr($images,"錯誤代号"))

{

echo "上傳成功!<br />";

echo "<img src=".$images.">";

header(__FILE__);//不知道有沒有用

}

else

{

echo $images;

header(__FILE__);//不知道有沒有用

}

}

已上是php代碼

html代碼,

<form name='imgupF' id='imgupF' action="" method="post" enctype="multipart/form-data">

<input type="hidden" name="sub" value="sub" />

<input type="file" name="img_up" id="img_up" />

<input type="submit" value="上傳" />

</form>

--------------------------------------------------------------------------------------------

類檔案:

<?php

//檔案上傳

class Upload

{

//是否需要上傳

public $onoff=false;

//上傳檔案最大值

public $maxsize='';

//上傳檔案路徑

public $uppath='';

//錯誤代号

public $error=0;

//錯誤資訊

public $error_info;

//檢查檔案格式資訊

public $checkinfo='';

//方法回報資訊

public $reinfo='';

//上傳的檔案

public $upfile="";

//其他資訊變量

//圖檔上傳方法帶參數 Up_Images(開關,上傳的檔案,上傳路徑,上傳類型,最大大小)

public function Up_Images($onoff,$upfile,$uppath,$file_type,$maxsize)

{

if($onoff)

{

$check=Upload::CheckFileType($upfile,$file_type,$maxsize);

if($check=='ok')

{

$postfix=array_reverse(explode(".",$upfile['name']));  //擷取檔案字尾名

$savepath=$uppath.date("Ymd_His",time()).".".$postfix[0];//設定檔案上傳的位址

if(move_uploaded_file($upfile['tmp_name'],$savepath))

{

$check=$savepath;

}

else

{

$check=Upload::Error(99);

}

}

}

return $check;

}

//判斷上傳的檔案類型及檔案的大小 帶參數CheckFileType(需驗證的檔案,檔案類型,大小驗證)

public function CheckFileType($upfile,$file_type,$maxsize)

{

$checkinfo=0;

switch ($file_type)

{

case 'images':

//圖檔格式和大小判斷

if($upfile['type']!='image/pjpeg' && $upfile['type']!='image/jpeg' && $upfile['type']!='image/png' && $upfile['type']!='image/x-png' && $upfile['type']!='image/gif')

{ $checkinfo=Upload::Error(101); break; }

else if($upfile['size']>$maxsize*1024*1024)

{ $checkinfo=Upload::Error(102); break; }

else

{ $checkinfo='ok'; break; }

break;

default:

$checkinfo=Upload::Error(100);

break;

}

return $checkinfo;

}

//錯誤提示資訊回報 帶參數 Error(錯誤代号)

public function Error($error)

{

$error_info='';

switch ($error)

{

case 101:

$error_info="圖檔格式不正确!/n隻支援jpg、gif、png三種格式圖檔 /n錯誤代号:101";

break;

case 102:

$error_info="上傳檔案太大/n最大大小:".$maxsize." /n錯誤代号:102:";

break;

case 100:

$error_info="目前上傳檔案損壞或無法識别,您需要重新選擇上傳檔案! /n錯誤代号:100:";

break;

case 99:

$error_info="無法将檔案上傳到指定路徑!/n解決方案:/n1:請檢查該路徑是否存在/n2:檢查該路勁是否具備讀寫權限! /n錯誤代号:99:";

default:

$error_info="未知的錯誤!/n錯誤代号:未知";

break;

}

return $error_info;

}

}

?>