我們先來看一下項目結構圖與資料庫結構圖吧
項目結構:
運行效果;
up.html 簡單的上傳表單檔案
| 代碼如下 |
複製代碼 |
<form action="up.php" enctype="multipart/form-data" method="post" name="uploadfile">上傳檔案:<input type="file" name="upfile" /><br> <input type="submit" value="上傳" /></form> |
up.php 用來處理圖片檔案上傳的程式
| 代碼如下 |
複製代碼 |
<?php //print_r($_FILES["upfile"]); if(is_uploaded_file($_FILES['upfile']['tmp_name'])){ $upfile=$_FILES["upfile"]; //擷取數組裡面的值 $name=$upfile["name"];//上傳檔案的檔案名稱 $type=$upfile["type"];//上傳檔案的類型 $size=$upfile["size"];//上傳檔案的大小 $tmp_name=$upfile["tmp_name"];//上傳檔案的臨時存放路徑 /* 這是一種非常簡單檔案上傳方式。基於安全方面的考慮,您應當增加有關什麼使用者有權上傳檔案的限制。 上傳限制 在這個指令碼中,我們增加了對檔案上傳的限制。使用者只能上傳 .gif 或 .jpeg 檔案 */ switch ($type){ case 'image/pjpeg':$okType=true; break; case 'image/jpeg':$okType=true; break; case 'image/gif':$okType=true; break; case 'image/png':$okType=true; break; } if($okType){ /** * 0:檔案上傳成功<br/> * 1:超過了檔案大小,在php.ini檔案中設定<br/> * 2:超過了檔案的大小MAX_FILE_SIZE選項指定的值<br/> * 3:檔案只有部分被上傳<br/> * 4:沒有檔案被上傳<br/> * 5:上傳檔案大小為0 */ $error=$upfile["error"];//上傳後系統返回的值 echo "================<br/>"; echo "上傳檔案名稱是:".$name."<br/>"; echo "上傳檔案類型是:".$type."<br/>"; echo "上傳檔案大小是:".$size."<br/>"; echo "上傳後系統返回的值是:".$error."<br/>"; echo "上傳檔案的臨時存放路徑是:".$tmp_name."<br/>"; echo "開始移動上傳檔案<br/>"; //把上傳的臨時檔案移動到up目錄下面 move_uploaded_file($tmp_name,'up/'.$name); $destination="up/".$name; echo "================<br/>"; echo "上傳資訊:<br/>"; if($error==0){ echo "檔案上傳成功啦!"; echo "<br>圖片預覽:<br>"; echo "<img src=".$destination.">"; //echo " alt="圖片預覽:r檔案名稱:".$destination."r上傳時間:">"; }elseif ($error==1){ echo "超過了檔案大小,在php.ini檔案中設定"; }elseif ($error==2){ echo "超過了檔案的大小MAX_FILE_SIZE選項指定的值"; }elseif ($error==3){ echo "檔案只有部分被上傳"; }elseif ($error==4){ echo "沒有檔案被上傳"; }else{ echo "上傳檔案大小為0"; } }else{ echo "請上傳jpg,gif,png等格式的圖片!"; } } ?> |
總結分析
在php圖片上傳中我們主要是通過使用 PHP 的全域數組 $_FILES,你可以從客戶電腦向遠程伺服器上傳檔案。
第一個參數是表單的 input name,第二個下標可以是 "name", "type", "size", "tmp_name" 或 "error"。就像這樣:
$_FILES["file"]["name"] - 被上傳檔案的名稱
$_FILES["file"]["type"] - 被上傳檔案的類型
$_FILES["file"]["size"] - 被上傳檔案的大小,以位元組計
$_FILES["file"]["tmp_name"] - 儲存在伺服器的檔案的臨時副本的名稱
$_FILES["file"]["error"] - 由檔案上傳導致的錯誤碼
只要你瞭解了上面這些參數就可以完全的在php中實現檔案上傳了哦,因為上面我限制了
| 代碼如下 |
複製代碼 |
switch ($type){ case 'image/pjpeg':$okType=true; break; case 'image/jpeg':$okType=true; break; case 'image/gif':$okType=true; break; case 'image/png':$okType=true; break; } |
只能上傳jpg,gif,png,jpeg四種格式的圖片檔案了,所以說這裡是圖片上傳實現了。