1. 程式人生 > >上傳檔案 原始碼

上傳檔案 原始碼

//前臺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 "超出上傳檔案大小限制";
        }

 ?>