標籤:-- 伺服器 bre return info load exp move 選項
<?php$fileinfo=$_FILES["myfile"];function uploadfile($fileinfo,$allowext=array(‘jpeg‘,‘jpg‘,‘pnd‘,‘gif‘,‘wbmp‘),$flag=true,$maxsize=2097152){//判斷錯誤資訊if($fileinfo[‘error‘]>0){ switch($fileinfo[‘error‘]) { case 1: $mes= "上傳檔案超過了PHP設定檔中upload_max_filesize選項的值"; break; case 2: $mes= "超過了表單MAX_FILE_SIZE的限制大小"; break; case 3: $mes= "檔案部分被上傳"; break; case 4: $mes= "沒有選擇上傳檔案"; break; case 6: $mes= "沒有找到臨時目錄"; break; case 7: case 8: $mes= "系統錯誤"; break; } exit($mes); }//判斷上傳檔案類型是不是在規定類型中 $allowext=array(‘jpeg‘,‘jpg‘,‘pnd‘,‘gif‘,‘wbmp‘); //定義一下允許的上傳檔案類型 $ext=strtolower(end(explode(‘,‘,$fileinfo[‘name‘])));//截取上傳副檔名 if(!in_array($ext,$allowext)) // 判斷上傳檔案的副檔名是不是在定義類型中 { exit(‘非法檔案類型‘); }//判斷上傳檔案大小 $maxsize=2097152; //寫最大的位元組數,自己算 if($fileinfo[‘size‘]>$maxsize) { exit(‘上傳檔案過大‘); } //判斷檔案是否是通過HTTP POST方式上傳上來的 if(!is_uploaded_file($fileinfo[‘tmp_name‘])) { exit(‘檔案不是通過HTTP POST方式上傳上來的‘); } //檢測是否為真實的圖片類型,而不是認為改動的 $flag=true; if($flag) { if(!getimagesize($fileinfo[‘tmp_name‘])) { echo "不是真實的圖片類型"; } } //判斷伺服器上儲存的檔案夾在不在$path=‘uploads‘; //伺服器上隱藏檔的檔案名稱 if(!file_exists($path)) { mkdir($path,0777,true);//不存在就建立一個目錄 chmod($path,0777);//加一個許可權 }$uniname=md5(uniqid(microtime(true),true)).‘.‘.$ext; //通過MD5加密等措施給檔案名稱取名,產生唯一檔案名 $destination=$path.‘/‘.$uniname; if(!move_uploaded_file($fileinfo[‘tmp_name‘],$destination)) //上傳檔案 { echo "檔案上傳失敗"; } return array( ‘newname‘=>$destination, ‘size‘=>$fileinfo[‘size‘], ‘type‘=>$fileinfo[‘type‘] ); }
php部分---單檔案上傳的封裝類