2 回答

紅顏未知己
TA貢獻16條經驗 獲得超2個贊
ok
<html> <head></head> <body> <form?action=""?method="post"?enctype="multipart/form-data"> <input?type="file"?name="myfile">上傳文件<br?/> <input?type="submit"?value="提交"> </form> </body> </html> <?php? //上傳文件思路 //通過$_FILES['name值']來接收文件參數 //取出文件臨時文件名??tmp_name //取出文件后綴??pathinfo(文件名,PATHINFO_EXTENSION); //創建文件保存的目錄 //???1?檢查目錄是否存在??file_exists(目錄名) //???2如果沒有則創建??mkdir(目錄名)?chmod()改變文件模式 //組合要保存的文件名(包括路徑)?? // ?1采用MD5加密當前時間戳time().'/'.文件后綴名; // ?2直接用文件名保存 //移動文件到指定目錄下??move_uploaded_file(移動的文件名,要保存的名字) // header('content-type:text/html;charset=utf-8'); $fileInfo=$_FILES['myfile']; $maxSize=2097152;//允許的最大值 $allowExt=array('jpeg','jpg','png','gif','wbmp'); $flag=true;//檢測是否為真實圖片類型 //1.判斷錯誤號 if($fileInfo['error']==0){ //判斷上傳文件的大小 if($fileInfo['size']>$maxSize){ exit('上傳文件過大'); } //$ext=strtolower(end(explode('.',$fileInfo['name']))); $ext=pathinfo($fileInfo['name'],PATHINFO_EXTENSION); if(!in_array($ext,$allowExt)){ exit('非法文件類型'); } //判斷文件是否是通過HTTP?POST方式上傳來的 if(!is_uploaded_file($fileInfo['tmp_name'])){ exit('文件不是通過HTTP?POST方式上傳來的'); } //檢測是否為真實的圖片類型 if($flag){ if(!getimagesize($fileInfo['tmp_name'])){ exit('不是真正圖片類型'); } } $path='uploads'; if(!file_exists($path)){ mkdir($path,0777,true); chmod($path,0777); } //確保文件名唯一,防止重名產生覆蓋 $uniName=md5(uniqid(microtime(true),true)).'.'.$ext; //echo?$uniName;exit; $destination=$path.'/'.$uniName; if(@move_uploaded_file($fileInfo['tmp_name'],$destination)){ echo?'文件上傳成功'; }else{ echo?'文件上傳失敗'; } }else{ //匹配錯誤信息 switch($fileInfo['error']){ case?1: echo?'上傳文件超過了PHP配置文件中upload_max_filesize選項的值'; break; case?2: echo?'超過了表單MAX_FILE_SIZE限制的大小'; break; case?3: echo?'文件部分被上傳'; break; case?4: echo?'沒有選擇上傳文件'; break; case?6: echo?'沒有找到臨時目錄'; break; case?7: case?8: echo?'系統錯誤'; break; } }
- 2 回答
- 1 關注
- 1550 瀏覽
添加回答
舉報
0/150
提交
取消