阅读量:0
PHP上传进度条可以通过使用Session来存储上传进度信息,并使用JavaScript定时轮询来更新进度条。
以下是一个简单的示例:
- 创建一个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); } }
- 创建一个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>
- 创建一个PHP文件 progress.php 来获取和返回上传进度信息:
<?php session_start(); header('Content-Type: application/json'); echo json_encode(['progress' => $_SESSION['upload_progress'] ?? 0]);
通过这种方式,可以实现一个简单的上传进度条功能,用户可以看到文件上传的进度。需要注意的是,这只是一个基本的示例,实际应用中可能需要根据具体情况进行调整和完善。