PHP 菜鳥教程

PHP 高級(jí)教程

PHP & MySQL

PHP 參考手冊(cè)

PHP 文件上傳

在本教程中,您將學(xué)習(xí)如何使用PHP將文件上傳到遠(yuǎn)程Web服務(wù)器。

用PHP上傳文件

在本教程中,我們將學(xué)習(xí)如何使用簡單HTML表單和PHP上傳文件到遠(yuǎn)程服務(wù)器上。您可以上傳任何類型的文件,例如圖像,視頻,ZIP文件,Microsoft Office文檔,PDF,可執(zhí)行文件和其他各種文件類型。

第1步:創(chuàng)建HTML表單以上傳文件

以下示例將創(chuàng)建一個(gè)可用于上傳文件的簡單HTML表單。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>File Upload Form</title>
</head>

    <form action="upload-manager.html" method="post" enctype="multipart/form-data">
        <h2>Upload File</h2>
        <label for="fileSelect">Filename:</label>
        <input type="file" name="photo" id="fileSelect">
        <input type="submit" name="submit" value="Upload">
        <p><strong>Note:</strong>僅允許.jpg、.jpeg、.gif、.png格式,最大大小為5 MB。</p>
    </form>

</html>

注意:除了文件選擇字段外,上載表單還必須使用HTTP post方法,并且必須包含一個(gè) enctype="multipart/form-data" 屬性。此屬性可確保將表單數(shù)據(jù)編碼為多段MIME數(shù)據(jù),這是上傳大量二進(jìn)制數(shù)據(jù)(例如圖像,音頻,視頻等)所必需的。

第2步:處理上傳的文件

下面是我們的“Upload-manager.php”文件的完整代碼。 它將永久地將上傳的文件存儲(chǔ)在“upload”文件夾中,并執(zhí)行一些基本的安全檢查,如文件類型和文件大小,以確保用戶上傳正確的文件類型并在允許的限制內(nèi)。

<?php
//檢查表單是否已提交
if($_SERVER["REQUEST_METHOD"] == "POST"){
    // 檢查文件是否上傳成功
    if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0){
        $allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
        $filename = $_FILES["photo"]["name"];
        $filetype = $_FILES["photo"]["type"];
        $filesize = $_FILES["photo"]["size"];
    
        // 驗(yàn)證文件擴(kuò)展名
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        if(!array_key_exists($ext, $allowed)) die("錯(cuò)誤:請(qǐng)選擇有效的文件格式。");
    
        // 驗(yàn)證文件大小-最大5MB
        $maxsize = 5 * 1024 * 1024;
        if($filesize > $maxsize) die("錯(cuò)誤:文件大小大于允許的限制。");
    
        // 驗(yàn)證文件的MIME類型
        if(in_array($filetype, $allowed)){
            // Check whether file exists before uploading it
            if(file_exists("upload/" . $filename)){
                echo $filename . " is already exists.";
            } else{
                move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/" . $filename);
                echo "您的文件已成功上傳。";
            } 
        } else{
            echo "錯(cuò)誤:上載您的文件時(shí)出現(xiàn)問題。 請(qǐng)?jiān)僭囈淮巍?quot;; 
        }
    } else{
        echo "Error: " . $_FILES["photo"]["error"];
    }
}
?>

注意:以上腳本可防止上傳與同一文件夾中現(xiàn)有文件同名的文件。但是,如果您想要允許這樣做,只需在文件名前面加上隨機(jī)字符串或時(shí)間戳,例如$filename = time() . '_' . $_FILES["photo"]["name"];

您可能想知道這段代碼是關(guān)于什么的。好吧,讓我們逐一遍歷此示例代碼的每個(gè)部分,以更好地理解此過程。

代碼的用法解釋

一旦表單被提交,有關(guān)上傳文件的信息就可以通過 PHP 超全局?jǐn)?shù)組 $_ FILES 訪問。例如,我們的上傳表單包含一個(gè)名為 photo 的文件選擇字段(即 name = " photo") ,如果任何用戶使用這個(gè)字段上傳文件,我們可以獲得它的詳細(xì)信息,比如名稱、類型、大小、臨時(shí)名稱,或者在嘗試上傳時(shí)通過 $FILES ["photo"]關(guān)聯(lián)數(shù)組發(fā)生的任何錯(cuò)誤,如下所示:

  • $_FILES["photo"]["name"] — 此數(shù)組值指定文件的原始名稱,包括文件擴(kuò)展名。它不包括文件路徑。

  • $_FILES["photo"]["type"]  — 此數(shù)組值指定文件的MIME類型。

  • $_FILES["photo"]["size"] — 此數(shù)組值指定文件大小,以字節(jié)為單位。

  • $_FILES["photo"]["tmp_name"] — 該數(shù)組值指定了臨時(shí)名稱,包括在文件上載到服務(wù)器后即分配給該文件的完整路徑。

  • $_FILES["photo"]["error"] — 此數(shù)組值指定與文件上傳相關(guān)的錯(cuò)誤或狀態(tài)代碼,例如,如果沒有錯(cuò)誤,則為0。

以下示例中的PHP代碼將僅顯示上載文件的詳細(xì)信息,并將其存儲(chǔ)在Web服務(wù)器上的臨時(shí)目錄中。

<?php
if($_FILES["photo"]["error"] > 0){
    echo "錯(cuò)誤: " . $_FILES["photo"]["error"] . "<br>";
} else{
    echo "文件名: " . $_FILES["photo"]["name"] . "<br>";
    echo "文件類型: " . $_FILES["photo"]["type"] . "<br>";
    echo "文件大小: " . ($_FILES["photo"]["size"] / 1024) . " KB<br>";
    echo "存儲(chǔ)在: " . $_FILES["photo"]["tmp_name"];
}
?>

提示:成功上傳文件后,該文件將自動(dòng)存儲(chǔ)在服務(wù)器上的臨時(shí)目錄中。 要永久存儲(chǔ)此文件,您需要使用PHP的move_uploaded_file()函數(shù)將其從臨時(shí)目錄移動(dòng)到永久位置。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清