標籤:set 迴圈 錯誤資訊 攻擊 Enctype 標題 size 沒有 ipa
1.檔案上傳後提交顯示的資訊
<form action="chuli.php" method="post" enctype="multipart/form-data"><!--enctype="multipart/form-data代表的是上傳檔案--> <input type="file" name="file" /> <input type="submit" value="上傳" /></form>
<?phpvar_dump($_FILES);//$_FILES代表的是找檔案
點擊上傳後顯示下面資訊。
顯示的資料是一個二維數組,file代表上傳的選框的name值,file裡面的數組是上傳的圖片的基本資料。
(1)name:檔案名稱為001.png
(2)type:上傳檔案的類型
(3)tmp_name:上傳的檔案臨時儲存的路徑,如果不操作就會刪掉。
(4)error:上傳過程中的錯誤資訊。
(5)size上傳檔案的大小,單位是位元組b。
2.上傳檔案的具體步驟
<form action="chuli.php" method="post" enctype="multipart/form-data"><!--enctype="multipart/form-data代表的是上傳檔案--> <input type="file" name="file" /><!--這裡可以上傳多個檔案,在chuli.php處理頁面中就要用迴圈來上傳檔案。--> <input type="submit" value="上傳" /></form>
<?php//var_dump($_FILES);//$_FILES代表的是找檔案//檔案上傳之前需要做的一些事情//1.判斷是否出錯//2.控制上傳的格式,格式要嚴格控制,以防傳入代碼類的檔案攻擊資料庫。//3.控制上傳檔案的大小,不能上傳大檔案,一般資料庫會限制上傳檔案的大小。如果要上傳大檔案就要修改php的配製檔案。//4.控制檔案名稱不能重複(如果重複不能上傳。) //怎麼讓檔案名稱不重複 //1.檔案名稱自動產生,例如用檔案名稱+時間戳記+隨機數來命名 //2.使用檔案夾的方式,每一個使用者上傳是用程式建一個檔案夾來放檔案。 //3.使用流水號是最穩妥的方法,取到最後一個檔案的流水號再加1.//5.儲存檔案if(!$_FILES["file"]["error"])//判斷是否出錯,如果沒有錯誤。//如果表單裡面寫了2個input,說明上傳了2個檔案,要從數組裡面找到檔案的名字取出來。{ if($_FILES["file"]["type"]=="image/png" && $_FILES["file"]["size"]<1024000) //判斷檔案類型,從數組裡面的type取。檔案類型最好先輸出檔案的基本參數,從參數裡面把檔案類型複製過來。一些檔案名稱不好寫。 //同時判斷檔案的大小 { //$filename = "./file/";//要把檔案儲存體的目標位置,後面可以寫檔案名稱,但是檔案多了容易出問題。 //$filename = "./file/".$_FILES["file"]["name"];//所以一般用檔案自身的名字,在儲存位置後面拼上檔案名稱。 $filename = "./file/".date("YmdHis").$_FILES["file"]["name"]; $filename = iconv("UTF-8","gb2312",$filename); //第一個參數是原編碼格式,第二個參數是要轉的編碼格式,第三個是要轉的字串。 //上傳檔案的編碼格式為utf-8,在電腦裡顯示的格式是國標,這裡要轉化為國標的編碼格式。 if(!file_exists($filename))//判斷檔案是否已經存在 { move_uploaded_file($_FILES["file"]["tmp_name"],$filename);//上傳代碼,實際上檔案已經在伺服器,這裡只是把檔案儲存下來。 } else { echo "該檔案已存在"; } }}else{ echo $_FILES["file"]["error"];//如果出錯,輸出錯誤資訊。}
3.上傳按鈕的最佳化
這裡的選擇檔案可以換成圖片,點擊圖片上傳。做一個圖放在選擇檔案裡面,再把上傳檔案按鈕做的和圖片大小一致,透明度設定為完全透明,但是要讓選擇檔案在上層,這樣點擊圖片時實際上是點擊的選擇檔案按鈕。
4.上傳預覽,上傳圖片時先預覽,點擊儲存或者上傳時才是真正的上傳。
網頁和js只能動作伺服器的檔案,不能操作用戶端檔案。下面是雙傳頭像預覽處理代碼。
shangchuantouxiangyulan.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title></head><body><form id="sc" action="yulanchuli.php" target="hidden_frame" method="post" enctype="multipart/form-data"> <div id="yl" style="margin-left:0px; width:144px; height:170px; background-size:144px 170px; background-image:url(images/2015042215293286617.jpg)"> <input type="file" name="file" style="width:144px; height:170px; float:left; opacity:0;" width="146" onchange="document.getElementById(‘sc‘).submit()"/> </div> <input type="button" value="儲存"/></form><iframe style="display:none;" name="hidden_frame" id="hidden_frame"></iframe></body><script type="text/javascript">//回呼函數function showimg(aa){ var l = document.getElementById("yl"); l.style.backgroundImage = "url("+aa+")";}</script></html>
處理頁面yulanchuli.php
<?php //上傳檔案限制 if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 10000000)) { //檔案上傳是否出錯 if ($_FILES["file"]["error"] > 0) { echo "上傳出錯: " . $_FILES["file"]["error"] . "<br />"; } else { //判斷檔案是否已存在 $filename = "images/".$_FILES["file"]["name"]; $filename = iconv("UTF-8","gb2312",$filename); if (file_exists($filename)) { echo "<script language=‘javascript‘>alert(‘檔案已經存在!‘)</script>"; } else { //移動圖片至儲存路徑,解決中文亂碼問題 move_uploaded_file($_FILES["file"]["tmp_name"],$filename); echo "<script language=‘javascript‘>parent.showimg(‘".$filename."‘)</script>"; } } } else { echo "上傳失敗"; }?>
11月15日上午檔案上傳