溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP中怎么樣上傳文件

發(fā)布時間:2021-10-19 14:16:44 來源:億速云 閱讀:80 作者:小新 欄目:編程語言

小編給大家分享一下PHP中怎么樣上傳文件,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

配置php.ini

想要使用文件上傳的功能,首先我們需要配置php.ini,對其中的參數(shù)進(jìn)行合理地設(shè)置。那我們先來看一下應(yīng)該怎樣去找到php.ini文件。示例如下:

首先我們輸入:

<?php
phpinfo();
?>

輸出結(jié)果:

PHP中怎么樣上傳文件

由上述結(jié)果中,在Loaded Configuration File一欄中可以看到php.ini的具體路徑。由此便找到了php.ini文件。

php.ini中的文件太多可以使用ctrl+F來搜索相關(guān)配置項(xiàng)。那我們需要配置的參數(shù)如下:

  • file_uploads: on,說明服務(wù)器開啟了文件上傳功能;如果為 off,則說明服務(wù)器關(guān)閉了文件上傳功能。

  • upload_tmp_dir:上傳文件的臨時目錄。在文件被成功上傳之前,文件首先會存放到服務(wù)器端的臨時目錄中,不設(shè)置的為系統(tǒng)默認(rèn)的目錄。

  • upload_max_filesize:服務(wù)器允許上傳文件的最大值,以MB為單位。

  • max_execution_time:PHP 中一個指令所能執(zhí)行的最大時間,單位是秒。

  • memory_limit:PHP 中一個指令所分配的內(nèi)存空間,單位是 MB。

其中我們需要注意的是:配置完成后想要配置生效的話,需要重啟Apache 服務(wù)器,配置的參數(shù)才生效。

預(yù)定義變量 $_FILES

在我們配置完php.ini之后,我們就需要通過預(yù)定義變量$_FILES 來對上傳文件做一些限制和判斷。$_FILES 變量存儲的是上傳文件的相關(guān)信息,其需要保存的信息如下:

  • $_FILES[filename][name]:保存上傳文件的文件名

  • $_FILES[filename][size] :  保存上傳文件的大小

  • $_FILES[filename][tmp_name] :  保存上傳文件的臨時名稱

  • $_FILES[filename][type]   :保存上傳文件的類型

  • $_FILES[filename][error] :  保存上傳文件結(jié)果的代號,0 則表示成功

我們可以通過預(yù)定義變量 $_FILES結(jié)合HTML進(jìn)行示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>PHP文件上傳</title>
</head>
<body>
    <form action="" method="post" enctype="multipart/form-data">
        <input type="file" name="upfile">
        <input type="submit" value="上傳">
    </form>
</body>
</html>
<?php
    if(!empty($_FILES)){
        foreach ($_FILES['upfile'] as $key => $value) {
            echo $key.'=>'.$value.'<br>';
        }
    }
?>

運(yùn)行程序后,根據(jù)表單選擇要上傳的文件,我以test1.txt為例,輸出結(jié)果為:

PHP中怎么樣上傳文件

根據(jù)保存的信息我們可以得出該文件的相關(guān)信息:

文件名為test1.txt;上傳文件的類型為text/plain;保存上傳文件的臨時名稱為C:\Windows\phpD16F.tmp;0 則表示上傳文件成功;文件的大小為5。

單文件上傳

通過上面的代碼,我們已經(jīng)得到了要上傳文件的基本信息,接下來我們需要使用 move_uploaded_file() 函數(shù)來實(shí)現(xiàn)上傳。它的主要功能就是把剛才上傳的文件移動到一個新的位置。它的語法格式如下:

move_uploaded_file(string $filename, string $destination)

其中$filenameb表示的是上傳文件的文件名,這個文件名并不是上傳文件的原文件名,而是通過上一步$_FILES中tmp_name得到的文件名;$destinationb表示的是這個上傳文件要移動到的位置。

執(zhí)行函數(shù)執(zhí)行成功的話會返回 TRUE,失敗的話返回 FALSE。

接下來我們看一下示例:

把剛才的test1.txt文件上傳到我在根目錄中創(chuàng)建的一個名為phptest的文件夾中,操作如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>PHP文件上傳</title>
</head>
<body>
    <form action="" method="post" enctype="multipart/form-data">
        <input type="file" name="upfile">
        <input type="submit" value="上傳">
    </form>
</body>
</html>
<?php
    if(!empty($_FILES)){
        $tmpname   = $_FILES['upfile']['tmp_name'];     // 臨時文件名稱
        $name      = $_FILES['upfile']['name'];         // 文件的原名稱
        $path      = './phptest';                       // 上傳目錄
        $file_name = date('YmdHis').rand(100,999).$name;// 避免文件重名,更改文件名稱
        if(move_uploaded_file($tmpname, $path.'/'.$file_name)){
            echo $name." 上傳成功!";
        }else{
            echo $name." 上傳失敗!";
        }
    }
?>

按照表單上傳文件后輸出結(jié)果如下:

PHP中怎么樣上傳文件

如此則表示我想要上傳的test2.txt已經(jīng)上傳到我需要的目錄中了:

PHP中怎么樣上傳文件

多文件上傳

通過上述示例已經(jīng)了解了單文件上傳的過程,但是在日常使用中經(jīng)常會用到的是多文件上傳,那多文件上傳應(yīng)該怎么操作呢?

示例如下:

還和上面的示例一樣,上傳多個文件到我在根目錄里創(chuàng)建的phptest文件夾里

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>PHP文件上傳</title>
</head>
<body>
    <form action="" method="post" enctype="multipart/form-data">
        <input type="file" name="upfile[]"><br>
        <input type="file" name="upfile[]"><br>
        <input type="file" name="upfile[]"><br>
        <input type="submit" value="上傳">
    </form>
</body>
</html>
<?php
    if(!empty($_FILES)){
        $tmpname = $_FILES['upfile']['tmp_name'];
        $name = $_FILES['upfile']['name'];
        $path = './phptest';
        for ($i=0; $i < count($tmpname); $i++) {
            $file_name = date('YmdHis').rand(100,999).$name[$i];
            if(move_uploaded_file($tmpname[$i], $path.'/'.$file_name)){
                echo $name[$i].' 上傳成功!<br>';
            }else{
                echo $name[$i].' 上傳失?。?lt;br>';
            }
        }
    }
?>

輸出結(jié)果:

PHP中怎么樣上傳文件

如此結(jié)果顯示,多個文件已經(jīng)上傳到我的文件夾里了:

PHP中怎么樣上傳文件

以上是“PHP中怎么樣上傳文件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI