為了簡單一些,php文件跟form表單寫在了一個文件裡.
php單文件上傳---->
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 </head> 6 <body> 7 <form action="upload.php" method="post" enctype="multipart/form-data"> 8 請選擇要上傳的文件:<input type="file" name="myfile"/><br /><br /> 9 <input type="submit" value="submit" /> 10 <input type="hidden" name="MAX_FILE_SIZE" value="5982"/> 11 </form> 12 </body> 13 </html> 14 15 16 17 <?php 18 if(!empty($_FILES)){ 19 header('content-type:text/html;charset=utf-8'); 20 $fileInfo=$_FILES['myfile']; 21 print_r($_FILES); 22 //如果上傳出錯則退出並打印錯誤信息 23 if($fileInfo['error']>0){ 24 switch($fileInfo['error']){ 25 case 1: 26 $msg_error='上傳文件超過了php配置文件中UPLOAD_MAX_FILESIZE選項的值'; 27 break; 28 case 2: 29 $msg_error='超過了表單MAX_FILE_SIZE限制的大小'; 30 break; 31 case 3: 32 $msg_error='文件部分上傳'; 33 break; 34 case 4: 35 $msg_error='沒有文件上傳'; 36 break; 37 case 6: 38 $msg_error='沒有找到臨時目錄'; 39 break; 40 case 7: 41 case 8: 42 $msg_error='系統錯誤'; 43 break; 44 } 45 exit($msg_error); 46 } 47 $filename=$fileInfo['name']; 48 //獲取文件的擴展名 49 $ext=strtolower(substr($filename,strrpos($filename,'.')+1)); 50 //定義可允許上傳的擴展名 51 $allowExt=array('txt','html','png','gif','jpeg'); 52 //檢測上傳文件的類型 53 if(!in_array($ext,$allowExt)){ 54 exit('上傳文件類型錯誤'); 55 } 56 57 58 //檢測文件的大小 59 $maxSize=2097152; 60 if($fileInfo['size']>$maxSize){ 61 exit('上傳文件過大'); 62 } 63 64 //檢測是否為HTTP POST方式上傳上來的 65 if(!is_uploaded_file($fileInfo['tmp_name'])){ 66 exit('文件不是通過HTTP POST方式提交上來的'); 67 } 68 69 //確保文件名字唯一,防止同名文件被覆蓋 70 $uniqName=md5(uniqid(microtime(true),true)).'.'.$ext; 71 72 //定義保存在哪個文件夾下,如果沒有該文件夾則創建 73 $path='uploads'; 74 if(!file_exists($path)){ 75 mkdir($path,0777,true); 76 chmod($path,0777); 77 } 78 $destination=$path.'/'.$uniqName; 79 80 //移動文件至要保存的目錄 81 if(! @move_uploaded_file($fileInfo['tmp_name'],$destination)){ 82 exit('文件上傳失敗'); 83 } 84 85 echo '上傳成功'; 86 87 } 88 ?>