PHP 上傳與下載

1 upload

    $_FILES 超全局數組,包含了有關上傳文件的全部信息!
    並且,這個數組中只包含文件相關信息,其餘數據依然在$_POST裏面。
      $_FILES 是一個二維數組,每上傳一個文件,都是數組的一個子數組。每一個子數組包含信息以下:
      'name' => string 'ch05-數據庫對象.ppt' (上傳文件名)
      'type' => string 'application/vnd.ms-powerpoint' (上傳文件所屬的MIME類型)
      'tmp_name' => string 'E:\Tools\wamp64\tmp\phpDEC9.tmp' (文件上傳後,在服務器存儲的緩存文件地址)
      'error' => int 0 (出現的錯誤信息,0表示沒有錯誤)
      'size' => int 836096 (上傳文件的大小)
   
      error常見的值:
      0 沒有任何錯誤
      1 超過服務器限制大小。  php.ini文件的upload_max_filesize;
      2 超過客戶端限制大小。 表單中的隱藏域name="MAX_FILE_SIZE"限制的大小
      3 文件只被上傳了一部分、
      4 沒有上傳文件php

    var_dump($_FILES);
    
    foreach ($_FILES as $key => $value) {
        //取到文件名,並用.分隔爲數組
        $nameArr = explode(".", $_FILES[$key]["name"]);
        //從上述數組中,取到最後一個,就是上傳文件的後綴名
        $houzhiming = $nameArr[count($nameArr)-1];
        //使用當前時間+隨機數的方式,隨機生成一個文件名
        $filename = date("YmdHis").rand(100,999).".".$houzhiming;
        // 判斷myFile裏面的臨時文件,是否是上傳過來的。
        if(is_uploaded_file($_FILES[$key]["tmp_name"])){
            // 將臨時文件,移動到服務器www根目錄下的upload文件夾中。
            // 若是成功返回true,不然返回false
            $isOk = move_uploaded_file($_FILES[$key]["tmp_name"],$_SERVER['DOCUMENT_ROOT']."/upload/".$filename);
            if(!$isOk){
                echo("文件【{$_FILES[$key]["name"]}】上傳失敗,沒法移動到指定目錄下!!");
                continue;
            }
        }else{
            echo("文件【{$_FILES[$key]["name"]}】上傳的文件不是合法上傳的!");
            continue;
        }
        
        echo "文件【{$_FILES[$key]["name"]}】上傳成功!!!<br>";
    }

 

2 download

   這段代碼雖然本身寫不簡單可是咱們能夠用現成的,因此也就是多複雜了數據庫

    //文件下載練習
    $filename="./upload/aa.png";
    $basename=pathinfo($filename);
    header("Content-Type: image/png"); //指定下載文件類型的
    header("Content-Disposition:attachment;filename=".$basename["basename"]);//指定下載文件的描述信息
    header("Content-Length:".filesize($filename));  //指定文件大小的
    readfile($filename);//將內容輸出,以便下載。
相關文章
相關標籤/搜索