上傳檔案 原始碼
阿新 • • 發佈:2018-11-01
//前臺index.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>檔案上傳</title> </head> <body> <form action="doupload.php" method="post" enctype="multipart/form-data"> <input type="file" name="myFile"/> <input type="hidden" name="MAX_FILE_SIZE" value="1024"> <!-- <input type="hidden" name="MAX_FILE_SIZE" value="1024">通過建立隱藏域來控制檔案上傳的大小 在頁面上進行判斷,value是1024kb,這是客戶端上設定的限制,最好是伺服器做限制 --> <input type="submit" value="上傳"/> </form> </body> </html>
//後臺doupload.php
<?php header("Content-type: text/html; charset=utf-8"); //預定義變數 //print_r($_FILES);//可以顯示錯誤號,根據錯誤號來定位錯誤資訊 $filename=$_FILES['myFile']['name']; $type=$_FILES['myFile']['type']; $tmp_name=$_FILES['myFile']['tmp_name'];//儲存地址 $error=$_FILES['myFile']['error'];//錯誤型別 $size=$_FILES['myFile']['size'];//檔案大小 $filenamemd5=getUniName($filename); // $types="jpg";//只能上傳圖片 $limitsize="185000";//控制圖片大小 $a=getExt($filename); //$getext=getExt($filename); //得到檔案的副檔名 function getExt($filename){ $first=explode(".",$filename); //檔名開始以.分割 $ext=strtolower(end($first)); //取出陣列中的最後一個數組進行返回 return $ext; } //檔名以時間戳微秒md5加密的形式出現,確保檔案的唯一 function getUniName(){ return md5(microtime(true)); } //echo getUniName(); 返回md5加密的數值 function gettypes($a){ @$array=array(jpg,png,txt); $b=in_array($a,$array); var_dump($b); return $b; } if($limitsize>=$size){ if(gettypes($a)){ if($error==0){ if (is_uploaded_file($tmp_name)) { //將伺服器上的臨時檔案移動到指定目錄 $filename=$filenamemd5.".".getExt($filename); $destination="uploads/".$filename; if(move_uploaded_file($tmp_name, $destination)){ //檢測這個臨時檔案是否為post方式 //返回鎮或者假 echo $filename."---"."檔案上傳成功"; }else{ echo "你不是post上傳的,非法操作"; } }else{ echo "{$filename}檔案移動失敗"; } }else{ switch ($error) { case 1: echo "超過php配置檔案upload_max_filesize的值"; break; case 2: echo "超過表單max_file_size的值"; break; case 3: echo "部分檔案被上傳"; break; case 4: echo "沒有檔案被上傳"; break; case 6: case 7: echo "未知錯誤"; } } }else{ echo "只能上傳圖片"; } }else{ echo "超出上傳檔案大小限制"; } ?>