温馨提示×

PHP上传进度条的实现方式

PHP
小樊
99
2024-07-22 18:12:06
栏目: 编程语言

PHP上传进度条可以通过使用Session来存储上传进度信息,并使用JavaScript定时轮询来更新进度条。

以下是一个简单的示例:

  1. 创建一个PHP文件 upload.php 来处理文件上传:
<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
        $fileSize = $_FILES['file']['size'];
        $uploadedSize = 0;

        $file = fopen($_FILES['file']['tmp_name'], 'r');

        // 计算文件大小
        while (!feof($file)) {
            $uploadedSize += strlen(fread($file, 8192));
            $_SESSION['upload_progress'] = min(100, floor($uploadedSize / $fileSize * 100));
        }

        fclose($file);
    }
}
  1. 创建一个HTML文件 index.html 来展示上传进度条和处理文件上传:
<!DOCTYPE html>
<html>
<head>
    <title>Upload Progress Bar</title>
</head>
<body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="submit" value="Upload">
    </form>

    <progress id="progressBar" value="0" max="100"></progress>

    <script>
        function updateProgressBar() {
            var xhr = new XMLHttpRequest();
            xhr.open('GET', 'progress.php', true);
            xhr.onload = function() {
                var progress = JSON.parse(xhr.responseText).progress;
                document.getElementById('progressBar').value = progress;
            };
            xhr.send();
        }

        setInterval(updateProgressBar, 1000);
    </script>
</body>
</html>
  1. 创建一个PHP文件 progress.php 来获取和返回上传进度信息:
<?php
session_start();

header('Content-Type: application/json');
echo json_encode(['progress' => $_SESSION['upload_progress'] ?? 0]);

通过这种方式,可以实现一个简单的上传进度条功能,用户可以看到文件上传的进度。需要注意的是,这只是一个基本的示例,实际应用中可能需要根据具体情况进行调整和完善。

0