首頁 >後端開發 >PHP問題 >php檔案上傳程式碼怎麼寫

php檔案上傳程式碼怎麼寫

angryTom
angryTom原創
2019-10-26 16:29:323159瀏覽

php檔案上傳程式碼怎麼寫

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 對應值對應值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[&#39;pic&#39;][&#39;tmp_name&#39;]))
{
    //声明允许上传的文件类型
    $allowType = [&#39;image/png&#39;,&#39;image/jpeg&#39;,&#39;image/gif&#39;,&#39;image/jpg&#39;];
    //正在上传的文件的类型
    $type = $file[&#39;pic&#39;][&#39;type&#39;];
//    echo $type;
    //判断类型是否是允许的类型
    if(!in_array($type,$allowType))//检查数组中是否存在某个值,返回布尔型
    {
       exit(&#39;上传类型有误&#39;);
    }
    //判断文件上传的大小
    if($file[&#39;pic&#39;][&#39;size&#39;] > 1024 * 1024 * 8) //以字节为主 1024*1024是1M
    {
        exit(&#39;上传的文件太大&#39;);
    }
    //设置新文件名
    $filename = date(&#39;YmdHis&#39;,strtotime(&#39;now&#39;)).rand(1000,9999);
    //获取上传文件的后缀名
    $name = $file[&#39;pic&#39;][&#39;name&#39;];
    //得到文件名字符串
    $filestr      = explode(&#39;.&#39;,$name);
    $ext = array_pop($filestr);
    //拼接新文件名
    $newfilename = $filename.&#39;.&#39;.$ext;
    //拼接上传文件的路径
    $path = &#39;./uploads/&#39;;
    //绝对路径
    $abspath = $path.$newfilename;
    if(move_uploaded_file($file[&#39;pic&#39;][&#39;tmp_name&#39;],$abspath))
    {
        echo &#39;上传成功&#39;;
    }else{
        echo &#39;上传失败&#39;;
    }
}

 更多PHP相關知識,請造訪

PHP中文網

#

以上是php檔案上傳程式碼怎麼寫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn