我正在尝试使用PHP创建上传进度条。 我看到了PHP 5.4的新功能:upload progress session。
这是我的HTML代码:
<form id="upload" action="ajax/progress.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="dupload" />
<input id="file1" type="file" name="file1" />
<input class="btn primary" type="submit" value="Upload" />
</form>
这就是progress.php:
<?php
session_start();
$key = ini_get("session.upload_progress.prefix") . 'dupload';
if (!empty($_SESSION[$key])){
$current = $_SESSION[$key]["bytes_processed"];
$total = $_SESSION[$key]["content_length"];
echo $current < $total ? ceil($current / $total * 100) : 100;
}
else {
var_dump($_SESSION);
var_dump($_FILES);
}
AJAX:
$('#upload').submit(function () {
interval_id = setInterval(function () {
$.ajax({
url: "ajax/progress.php6",
type: "POST",
success: function (data) {
console.log(data);
}
});
}, 200);
return false;
});
所有ini设置都是正确的。 (会话已启用,名称和前缀正确)
我总是得到一个空的会话数组。怎么了?
谢谢!
答案 0 :(得分:1)
无法对其进行排序,因此我使用了XMLHTTPREQUEST“progress”操作并且运行良好。 谢谢!
答案 1 :(得分:0)
在一个POST请求中,您无法执行AJAX请求,并在文件上传时读取会话。上传文件后,session.upload_progress.name
键将被删除,因此您将获得一个空数组。
答案 2 :(得分:0)
我认为这是因为您的表单未提交,因为您在
中返回false$('#upload').submit(function () {
interval_id = setInterval(function () {
$.ajax({
url: "ajax/progress.php6",
type: "POST",
success: function (data) {
console.log(data);
}
});
}, 200);
return false;
});
并初始化间隔,因此页面始终返回null,因为没有上传任何内容。尝试使用http://www.malsup.com/jquery/form,提交表单