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