PHP上傳進度條可以通過使用Session來存儲上傳進度信息,并使用JavaScript定時輪詢來更新進度條。
以下是一個簡單的示例:
<?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);
}
}
<!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
session_start();
header('Content-Type: application/json');
echo json_encode(['progress' => $_SESSION['upload_progress'] ?? 0]);
通過這種方式,可以實現一個簡單的上傳進度條功能,用戶可以看到文件上傳的進度。需要注意的是,這只是一個基本的示例,實際應用中可能需要根據具體情況進行調整和完善。