3

我正在尝试使用 PHP 创建一个上传进度条。我看到了 PHP 5.4 的新特性:上传进度会话

这是我的 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);
}

阿贾克斯:

$('#upload').submit(function () {
    interval_id = setInterval(function () {
        $.ajax({
            url: "ajax/progress.php6",
            type: "POST",
            success: function (data) {
                console.log(data);
            }
        });
    }, 200);
    return false;
});

所有ini设置都是正确的。(会话已启用,名称和前缀正确)

我总是得到一个空的会话数组。怎么了?

谢谢!

4

3 回答 3

1

无法对其进行排序,因此我使用了 XMLHTTPREQUEST“进度”操作,并且效果很好。谢谢!

于 2012-07-14T15:55:25.357 回答
0

在一个 POST 请求中是不可能的,您可以执行 AJAX 请求,并在文件上传时读取会话。文件上传后,session.upload_progress.name密钥被删除,所以你得到一个空数组。

于 2012-07-13T19:50:34.650 回答
0

我认为这是因为您的表单没有被提交,因为您在

$('#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,它提交表单

于 2012-09-10T05:00:39.937 回答