欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP實(shí)現(xiàn)文件上傳與下載的示例代碼

 更新時(shí)間:2023年12月15日 10:54:09   作者:代碼煉金術(shù)  
這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)文件上傳與下載功能的相關(guān)知識(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

PHP文件上傳下載

1、環(huán)境配置

修改 PHP.ini 配置文件可以定制上傳機(jī)制,通過(guò) phpinfo() 函數(shù)可以查看到 PHP.ini 文件所在位置。

配置說(shuō)明
file_uploads是否允許上傳文件,On 開(kāi)啟 Off 禁止上傳
upload_tmp_dir文件上傳過(guò)程中臨時(shí)保存的目錄,默認(rèn)保存位置為 /tmp
upload_max_filesize允許上傳的最大文件大小,可以使用 K、M、G 單位如 2M
post_max_sizePHP 將接受的最大 POST 數(shù)據(jù)大小,包括上傳文件、表單數(shù)據(jù)。所以 post_max_size 要大于 upload_max_filesize
max_file_uploads單個(gè)請(qǐng)求時(shí),允許上傳的最大文件數(shù)量

2、超全局?jǐn)?shù)組

上傳的文件保存在 $_FILES 超全局?jǐn)?shù)組中,具體參數(shù)說(shuō)明如下:

選項(xiàng)說(shuō)明
tmp_name臨時(shí)文件名
name上傳文件原文件名
type文件 MIME 類(lèi)型
error錯(cuò)誤編號(hào)
size文件大小,單位字節(jié)
//index.html 
<form action="./server.php" enctype="multipart/form-data" method="post">
        <label>
            <input type="file" name="files" value="" >
        </label>
        <button type="submit">提交</button>
 </form>
     
 //server.php
   print_r($_FILES); 

/*

Array
(
    [files] => Array
        (
            [name] => Key.txt
            [full_path] => Key.txt
            [type] => text/plain
            [tmp_name] => C:\wamp64\tmp\php665C.tmp
            [error] => 0
            [size] => 54
        )

)

*/

3、錯(cuò)誤說(shuō)明

上傳出錯(cuò)會(huì)在$_FILES[‘error’] 選項(xiàng)中體現(xiàn),具體錯(cuò)誤說(shuō)明如下:

UPLOAD_ERR_OK (0): 沒(méi)有錯(cuò)誤,文件上傳成功。

UPLOAD_ERR_INI_SIZE (1): 上傳的文件大小超過(guò)了php.ini中upload_max_filesize指令所設(shè)置的大小限制。

UPLOAD_ERR_FORM_SIZE (2): 上傳的文件大小超過(guò)了HTML表單中MAX_FILE_SIZE指令所設(shè)置的大小限制。

UPLOAD_ERR_PARTIAL (3): 文件只有部分被上傳。

UPLOAD_ERR_NO_FILE (4): 沒(méi)有文件被上傳。

UPLOAD_ERR_NO_TMP_DIR (6): 找不到臨時(shí)文件夾。

UPLOAD_ERR_CANT_WRITE (7): 文件寫(xiě)入失敗。

UPLOAD_ERR_EXTENSION (8): 由于PHP擴(kuò)展的限制,文件上傳被停止。

4、上傳安全

檢測(cè)文件是否是合法的上傳文件,以保證安全。

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 檢查文件是否成功上傳
    if (isset($_FILES['file_name']) && $_FILES['file_name']['error'] === UPLOAD_ERR_OK) {
        // 文件上傳成功
        $tempFilePath = $_FILES['file_name']['tmp_name'];
        $fileName = $_FILES['file_name']['name'];

        // 執(zhí)行進(jìn)一步的處理操作
        // ...

        echo "文件上傳成功!";
    } else {
        // 文件上傳失敗或未選擇文件
        echo "文件上傳失??!";
    }
}
?>

5、處理類(lèi)

下面是支持單文件、多文件上傳的處理類(lèi)。

index.html

<form action="./server.php" method="post" enctype="multipart/form-data">
        <input type="file" name="image">
        <input type="file" name="image[]">
        <input type="file" name="image[]">
        <button class="btn">提交</button>
</form>

server.php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 檢查是否有文件上傳
    if (isset($_FILES['images'])) {
        $fileCount = count($_FILES['images']['name']);
        
        // 遍歷每個(gè)上傳的文件
        for ($i = 0; $i < $fileCount; $i++) {
            // 檢查文件是否成功上傳
            if ($_FILES['images']['error'][$i] === UPLOAD_ERR_OK) {
                $tempFilePath = $_FILES['images']['tmp_name'][$i];
                $fileName = $_FILES['images']['name'][$i];

                // 執(zhí)行進(jìn)一步的處理操作
                // ...

                echo "文件 $fileName 上傳成功!<br>";
            } else {
                // 文件上傳失敗或未選擇文件
                echo "文件上傳失??!<br>";
            }
        }
    } else {
        // 沒(méi)有文件被上傳
        echo "沒(méi)有文件被上傳!<br>";
    }
}

6、文件下載

$file = "dog.jpg";
$fileName = basename($file);
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename={$fileName}");
header("Accept-ranges: bytes");
header("Content-Length: " . filesize($file));
readfile($file);

到此這篇關(guān)于PHP實(shí)現(xiàn)文件上傳與下載的示例代碼的文章就介紹到這了,更多相關(guān)PHP文件上傳與下載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論