php檔案上傳程式碼怎麼寫

2020-07-16 10:06:49

php檔案上傳程式碼怎麼寫

在初學php的時候,我們無法理解php檔案上傳的程式碼,以及上傳的邏輯,以下程式碼從初學者的角度編寫,希望對大家有幫助!

需要用到的知識:

超級全域性陣列:$_FILES

$_FILES['myfile']['name']的值是:用戶端檔案系統的檔名稱

$_FILES['myfile']['type']的值是:用戶端傳遞的檔案型別

$_FILES['myfile']['size']的值是:檔案的位元組大小

$_FILES['myflie']['tmp_name ']的值是:檔案被上傳後在伺服器儲存的臨時全路徑

$_FILES['myfile']['error']的值是:檔案上傳的錯誤程式碼

儲存在$_FILES['myfile']['error']中的值

值為0: 表示沒有發生任何錯誤

值為1: 表示上傳檔案的大小超出了約定值。檔案大小的最大值在PHP組態檔中指定的,指令是:upload_max_filesize

值為2: 表示上傳檔案大小超過了HTML表單隱藏域屬性的MAX_FILE_SIZE元素所指定的最大值

值為3: 表示檔案只被部分上傳

值為4:表示沒有上傳任何檔案

值為6: 表示找不到臨時資料夾

值為7: 表示檔案寫入失敗

錯誤值對應常數

UPLOAD_ERR_OK : 對應值0

UPLOAD_ERR_INI_SIZE : 對應值1

UPLOAD_ERR_FORM_SIZE : 對應值2

UPLOAD_ERR_PARTIAL : 對應值3

UPLOAD_ERR_NO_FILE : 對應值4

UPLOAD_ERR_NO_TMP_DIR : 對應值6

UPLOAD_ERR_CANT_WRITE : 對應值7

upload.html 程式碼如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>圖片上傳</title>
</head>
<body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="file"  name="pic"/>
        <!--通過表單限制上傳檔案的大小 一定要在上傳按鈕前 大小以位元組為主-->
        <input type="hidden" name="MAX_FILE_SIZE"  value="8388608"/>
        <input type="submit" name="sub" value="上傳" />
    </form>
</body>
</html>

upload.php 程式碼如下

<?php
//var_dump($_FILES);
//exit;
//判斷是否是檔案上傳
$file = $_FILES;
//第一個pic 是input 中的name值
if(is_uploaded_file($file['pic']['tmp_name']))
{
    //宣告允許上傳的檔案型別
    $allowType = ['image/png','image/jpeg','image/gif','image/jpg'];
    //正在上傳的檔案的型別
    $type = $file['pic']['type'];
//    echo $type;
    //判斷型別是否是允許的型別
    if(!in_array($type,$allowType))//檢查陣列中是否存在某個值,返回布林型
    {
       exit('上傳型別有誤');
    }
    //判斷檔案上傳的大小
    if($file['pic']['size'] > 1024 * 1024 * 8) //以位元組為主 1024*1024是1M
    {
        exit('上傳的檔案太大');
    }
    //設定新檔名
    $filename = date('YmdHis',strtotime('now')).rand(1000,9999);
    //獲取上傳檔案的字尾名
    $name = $file['pic']['name'];
    //得到檔案名字符串
    $filestr      = explode('.',$name);
    $ext = array_pop($filestr);
    //拼接新檔名
    $newfilename = $filename.'.'.$ext;
    //拼接上傳檔案的路徑
    $path = './uploads/';
    //絕對路徑
    $abspath = $path.$newfilename;
    if(move_uploaded_file($file['pic']['tmp_name'],$abspath))
    {
        echo '上傳成功';
    }else{
        echo '上傳失敗';
    }
}

以上就是php檔案上傳程式碼怎麼寫的詳細內容,更多請關注TW511.COM其它相關文章!