為了簡單一些,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 ?>