PHP有很多值得學習的地方,這裡我們主要介紹PHP上傳類的解決方案,希望大家通過本文有大的收獲。用戶可以直接在WEB頁面中輸入PHP命令代碼,因而不需要任何特殊的開發環境。在WEB頁面中,所有PHP代碼都被放置在“”中。此外,用戶還可以選擇使用諸如 等的形式。PHP引擎會自動識別並處理頁面中所有位於PHP定界符之間的代碼。
- <?php
- /**
- *Fileuploadclass
- *@version1.0.0(ThuAug1801:32:39CST2005)
- *@authorsanshi
- */
- classupLoad
- {
- /**
- *
- *@authorsanshi
- *@version1.0.0ThuAug1801:00:18CST2005
- *@paramstring$info文件內容
- *@paramstring$fileName生成的文件名
- *@returnboolean建立成功返回true
- *@deprecated
- *建立html文件
- */
- functioncreateHtml($info,$fileName)
- {
- }
- /**
- *
- *@authorsanshi
- *@version1.0.0ThuAug1801:03:09CST2005
- *@returnvoid
- *@deprecated
- *構造函數
- */
- functiondownLoad()
- {}
- /**
- *
- *@authorsanshi
- *@version1.0.0ThuAug1801:03:55CST2005
- *@paramstring$fileField在表單中的字段名
- *@paramstring$length限制的長度
- *@returnboolean成功返回true
- *@deprecated
- *功能實現函數
- */
- functioninit($fileField,$length='')
- {
- $files=$_FILES[$fileField];
- //用戶名需要改動,根據自己的實際情況做改動
- $userName='sanshi';
- $fileName=$files['name'];
- $fileType=$files['type'];
- $fileTemp=$files['tmp_name'];
- $fileSize=empty($length)?($files['size']+10):$length;
- $fileError=$files['error'];//這塊也許php4中沒有
- //改為
- //if($this->_isType($fileName)||$this->_isBig($length ))
- if(!$this->_isType($fileName)||$this->_isBig($length )||$fileError!=0)
- {
- //print_r($files);
- returnfalse;
- }else{
- $path=$this->_createDir($userName);//取得路徑
- $createFileName=$userName."_".time();//設置當前文件名
- $createFileType=$this->getFileType($fileName);//設置文件類別
- return@move_uploaded_file($fileTemp,$path.$createFileName.'.'.$createFileType)?true:false;
- }
- }
- /**
- *
- *@authorsanshi
- *@version1.0.0ThuAug1801:07:43CST2005
- *@paramint$length上傳限制的大小
- *@returnboolean超過返回true
- *@deprecated
- *判斷是否超過預定大小
- */
- function_isBig($length)
- {
- $bigest='';
- return$big>$bigest?true:false;
- }
- /**
- *
- *@authorsanshi
- *@version1.0.0ThuAug1801:08:55CST2005
- *@paramstring$fileName文件名
- *@returnstring$fileType文件後綴
- *@deprecated
- *取得文件後綴(只取得文件的最後一個後綴名)
- */
- functiongetFileType($fileName)
- {
- returnend(explode('.',$fileName));
- }
- /**
- *
- *@authorsanshi
- *@version1.0.0ThuAug1801:10:41CST2005
- *@paramstring$fileName文件名
- *@paramboolean$method是否檢查多個後綴默認false
- *@paramint$postFix後綴個數默認為2
- *@returnboolean存在返回true
- *@deprecated
- *檢查文件的後綴是否在類別數組中,類別數組自己設置
- *如果$method設置為true則檢查文件有幾個後綴
- */
- function_isType($fileName,$method='false',$postFix=2)
- {
- //設置類別數組
- $type=array('jpeg',
- 'gif',
- 'bmp',
- 'exe');
- $fileName=strtolower($fileName);
- $fileTypeArray=explode('.',$fileName);
- $fileType=end($fileTypeArray);
- //判斷是否有一個文件有多個後綴
- if($method)
- {
- if(count($fileTypeArray)>(is_int($postFix)?$postFix:2))
- {
- returnfalse;
- }
- }
- returnin_array($fileType,$type);
- }
- /**
- *
- *@authorsanshi
- *@version1.0.0ThuAug1801:17:19CST2005
- *@paramstring$userName
- *@returnstring$path
- *@deprecated
- *建立目錄目錄格式年/月/日/用戶名/
- *權限為755
- */
- function_createDir($userName)
- {
- $root='';
- $pathSign=DIRECTORY_SEPARATOR;
- $y=date('Y').$pathSign;
- $m=date('m').$pathSign;
- $d=date('d').$pathSign;
- $path=$root.$y.$m.$d.$userName;
- $dirArray=explode($pathSign,$path);
- $tempDir='';
- foreach($dirArrayas$dir)
- {
- $tempDir.=$dir.$pathSign;
- $isFile=file_exists($tempDir);
- clearstatcache();
- if(!$isFile&&!is_dir($tempDir))
- {
- @mkdir($tempDir,0755);
- }
- }
- return$path.$pathSign;
- }
- /**
- *
- *@authorsanshi
- *@version1.0.0ThuAug1801:19:32CST2005
- *@param string$dirName目錄名
- *@return boolean可以操作返回true
- *@deprecated
- *判斷操作是否在上傳目錄
- */
- function_isDel($dirName)
- {
- //注意upLoadDir,一定要與真正使用目錄相對應
- $upLoadDir='';
- $upLoadDir=preg_replace('/\//','/',$upLoadDir);
- $format="/^{$upLoadDir}/";
- returnpreg_match($format,$dirName);
- }
- /**
- *
- *@authorsanshi
- *@version1.0.0ThuAug1801:25:58CST2005
- *@paramstring$fileName文件名
- *@returnboolean刪除文件成功返回true
- *@deprecated
- *刪除文件
- */
- functiondelFile($fileName)
- {
- $cur_dir=dirname(trim($fileName));
- if($this->_isDel($cur_dir))
- {
- return@unlink($fileName)?true:false;
- }else{
- returnfalse;
- }
- }
- /**
- *
- *@authorsanshi
- *@version1.0.0ThuAug1801:27:43CST2005
- *@paramstring$dieName目錄名
- *@returnboolean刪除成功返回true
- *@deprecated
- *刪除目錄目錄下如果有文件不能刪除
- */
- functiondelDir($dirName)
- {
- if($this->_isDel($dirName)&&is_dir($dirName))
- {
- return@rmdir($dirName)?true:false;
- }else{
- returnfalse;
- }
- }
- }
- ?>
- <?php
- //使用
- /*
- include'upLoad.class.php';
- $up=newupLoad();
- if($up->init("file"))
- {
- echo'success';
- }else{
- echo'failure';
- }
- */
- ?>