html+php上傳圖片文件到服務器
一.html代碼
1 <body> 2 <form action="" method="post" enctype="multipart/form-data" name="upload_form"> 3 <label>選擇圖片文件</label> 4 <input name="imgfile" type="file" accept="image/gif, image/jpeg"/> 5 <input name="upload" type="submit" value="上傳" /> 6 </form> 7 </body>
二.php代碼
1 if (isset($_FILES['imgfile']) 2 && is_uploaded_file($_FILES['imgfile']['tmp_name'])) 3 { 4 $imgFile = $_FILES['imgfile']; 5 $upErr = $imgFile['error']; 6 if ($upErr == 0) 7 { 8 $imgType = $imgFile['type']; //文件類型。 9 /* 判斷文件類型,這個例子里僅支持jpg和gif類型的圖片文件。*/ 10 if ($imgType == 'image/jpeg' 11 || $imgType == 'image/gif') 12 { 13 $imgFileName = $imgFile['name']; 14 $imgSize = $imgFile['size']; 15 $imgTmpFile = $imgFile['tmp_name']; 16 /* 17 將文件從臨時文件夾移到上傳文件夾中。 18 注意:upfile這個文件夾必須先創建好,不然會報錯。 19 */ 20 move_uploaded_file($imgTmpFile, 'upfile/'.$imgFileName); 21 /*顯示上傳后的文件的信息。*/ 22 $strPrompt = sprintf("文件%s上傳成功<br>" 23 . "文件大小: %s字節<br>" 24 . "<img src='upfile/%s'>" 25 , $imgFileName, $imgSize, $imgFileName 26 ); 27 echo $strPrompt; 28 } 29 else 30 { 31 echo "請選擇jpg或gif文件,不支持其它類型的文件。"; 32 } 33 } 34 else 35 { 36 echo "文件上傳失敗。<br>"; 37 switch ($upErr) 38 { 39 case 1: 40 echo "超過了php.ini中設置的上傳文件大小。"; 41 break; 42 case 2: 43 echo "超過了MAX_FILE_SIZE選項指定的文件大小。"; 44 break; 45 case 3: 46 echo "文件只有部分被上傳。"; 47 break; 48 case 4: 49 echo "文件未被上傳。"; 50 break; 51 case 5: 52 echo "上傳文件大小為0"; 53 break; 54 } 55 } 56 } 57 else 58 { 59 }
三.php代碼分析:
$_FILES是一個數組變量,用於保存上傳后的文件信息。
$_FILES['imgfile']表示文件域名稱為'imgfile'的控件提交服務器后,上傳的文件的信息。
一個上傳的文件,有以下屬性信息:
'name': 上傳的文件在客戶端的名稱。
'type': 文件的 MIME 類型,例如"image/jpeg"。
'size': 已上傳文件的大小,單位為字節。
'tmp_name':上傳時,在服務器端,會把上傳的文件保存到一個臨時文件夾中,可以通過此屬性得到臨時文件名。
'error':文件在上傳過程中的錯誤代碼。如果上傳成功,此值為0,其它值的意義如下:
1:超過了php.ini中設置的上傳文件大小。
2:超過了MAX_FILE_SIZE選項指定的文件大小。
3:文件只有部分被上傳。
4:文件未被上傳。
5:上傳文件大小為0。
代碼中首先判斷$_FILES['imgfile']變量是否存在,如果存在,並且$_FILES['imgfile']['tmp_name']變量所指文件被上傳了,判斷error屬性,如果屬性為0,把上傳后的圖像從臨時文件夾移到upfile文件夾中,顯示上傳文件的信息,並顯示上傳后的圖像。
如果error值不為0,表示上傳失敗,顯示失敗信息。
四.完整代碼
1 <!DOCTYPE html > 2 <html lang="en"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>上傳圖片文件</title> 6 </head> 7 <?php 8 if (isset($_FILES['imgfile']) 9 && is_uploaded_file($_FILES['imgfile']['tmp_name'])) 10 { 11 $imgFile = $_FILES['imgfile']; 12 $upErr = $imgFile['error']; 13 if ($upErr == 0) 14 { 15 $imgType = $imgFile['type']; //文件類型。 16 /* 判斷文件類型,這個例子里僅支持jpg和gif類型的圖片文件。*/ 17 if ($imgType == 'image/jpeg' 18 || $imgType == 'image/gif') 19 { 20 $imgFileName = $imgFile['name']; 21 $imgSize = $imgFile['size']; 22 $imgTmpFile = $imgFile['tmp_name']; 23 /* 將文件從臨時文件夾移到上傳文件夾中。*/ 24 move_uploaded_file($imgTmpFile, 'upfile/'.$imgFileName); 25 /*顯示上傳后的文件的信息。*/ 26 $strPrompt = sprintf("文件%s上傳成功<br>" 27 . "文件大小: %s字節<br>" 28 . "<img src='upfile/%s'>" 29 , $imgFileName, $imgSize, $imgFileName 30 ); 31 echo $strPrompt; 32 } 33 else 34 { 35 echo "請選擇jpg或gif文件,不支持其它類型的文件。"; 36 } 37 } 38 else 39 { 40 echo "文件上傳失敗。<br>"; 41 switch ($upErr) 42 { 43 case 1: 44 echo "超過了php.ini中設置的上傳文件大小。"; 45 break; 46 case 2: 47 echo "超過了MAX_FILE_SIZE選項指定的文件大小。"; 48 break; 49 case 3: 50 echo "文件只有部分被上傳。"; 51 break; 52 case 4: 53 echo "文件未被上傳。"; 54 break; 55 case 5: 56 echo "上傳文件大小為0"; 57 break; 58 } 59 } 60 } 61 else 62 { 63 /*顯示表單。*/ 64 ?> 65 <body> 66 <form action="" method="post" enctype="multipart/form-data" name="upload_form"> 67 <label>選擇圖片文件</label> 68 <input name="imgfile" type="file" accept="image/gif, image/jpeg"/> 69 <input name="upload" type="submit" value="上傳" /> 70 </form> 71 </body> 72 <?php 73 } 74 ?> 75 </html>
記錄時間:2018年8月8日19:55:27