php 怎么获取上传进度

不及物动词 其他 116

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    要获取上传进度,可以通过以下两种方式实现。

    一种是使用 JavaScript 和 XMLHttpRequest 对象,结合服务器端返回的文件上传进度信息,实时更新页面中的进度条。具体步骤如下:
    1. 创建一个 XMLHttpRequest 对象。
    2. 使用 open() 方法指定请求的方法(POST 或 GET)和 URL。
    3. 设置 onprogress 事件处理程序,在上传期间会连续触发此事件,以获取上传的进度信息。
    4. 使用 send() 方法将数据发送到服务器。
    5. 设置 onload 事件处理程序,在上传完成后触发此事件。

    以下是一个示例的 JavaScript 代码:
    “`javascript
    // 创建XMLHttpRequest对象
    var xhr = new XMLHttpRequest();
    // 监听上传进度
    xhr.upload.onprogress = function (e) {
    if (e.lengthComputable) {
    var percent = Math.round(e.loaded / e.total * 100); // 计算上传进度
    console.log(percent + ‘%’); // 输出上传进度,可以根据需要更新页面中的进度条
    }
    };
    // 文件上传完成的回调函数
    xhr.onload = function () {
    console.log(‘上传完成’);
    };
    // 发送文件
    xhr.open(‘POST’, ‘upload.php’, true);
    xhr.send(formData);
    “`

    另一种方式是使用 PHP 的扩展库,如 APC、UploadProgress 或 Swoole 等,来获取上传进展信息。这些库提供了专门的方法和函数来检索上传文件的进度信息。具体步骤如下:
    1. 确保服务器上已经安装并启用了相应的扩展库。
    2. 使用扩展库提供的方法或函数获取上传进度信息。
    3. 根据需要将进度信息显示在页面或记录在日志文件中。

    以下是一个使用 APC 扩展库的示例:
    “`php
    // 启用APC扩展
    apc.rfc1867_allowed_upload_progress = On;

    // 获取上传进度
    $progress = apc_fetch(‘upload_progress_’ . $_POST[‘APC_UPLOAD_PROGRESS’]);

    // 输出上传进度
    echo $progress[‘current’] / $progress[‘total’] * 100 . ‘%’;
    “`

    注意:以上方法中,需要根据实际情况选择适合的方法,并根据具体需求进行修改和适配。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在PHP中,要获取上传进度,可以使用以下方法:

    1. 使用ajax和JavaScript:在前端页面中,使用XMLHttpRequest对象来发送异步请求,并设定onprogress事件来监听上传进度。在后端PHP文件中,设置session.upload_progress.enabled为true,并通过session.upload_progress.name配置session名称。然后在返回数据中,通过$_SESSION[‘upload_progress’]获取上传进度信息。

    2. 使用PHP的SESSION_UPLOAD_PROGRESS常量:通过设置php.ini文件中的session.upload_progress.enabled为1来启用这个特性。在上传文件的php脚本中,使用session_name()函数设置session名称,然后可以通过$_SESSION[‘SESSION_UPLOAD_PROGRESS’]来获取上传进度。

    3. 使用APC扩展:如果安装了Alternative PHP Cache(APC)扩展,可以使用apc_fetch()函数来获取上传进度。APC可以在上传的过程中将进度存储在缓存中,然后通过apc_fetch()函数来获取这个信息。

    4. 使用uploadprogress扩展:PHP提供了一个uploadprogress扩展,可以用来获取上传进度信息。这个扩展通过添加一个上传进度观察者来监视上传进度。首先,需要安装uploadprogress扩展,然后在php.ini文件中启用它。然后,在上传文件的PHP脚本中,使用uploadprogress_get_info()函数来获取上传进度。

    5. 使用第三方上传库:还有一些第三方上传库可以使用,比如UploadProgress或FineUploader。这些库提供了更丰富的功能和更详细的上传进度信息,可以更方便地获取上传进度。

    综上所述,以上是几种获取上传进度的方法,每种方法都有其特点和适用场景。根据实际情况选择合适的方法来获取上传进度。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    获取上传进度是指在文件上传过程中,我们可以实时获取上传进度的大小。在PHP中,要获取上传进度可以通过使用session和Ajax来实现。

    下面是一种简单的实现方式:

    ### 方法一:使用session和Ajax

    **Step1:前端页面**

    在前端页面中,我们需要使用Ajax来发送请求并获取上传进度。

    “`html




    上传进度


    上传进度






    “`

    **Step2:后端脚本**

    在后端脚本中,我们需要通过session来存储上传进度。

    “`php

    “`

    以上代码中,我们在move_uploaded_file函数之前加入了session相关的代码来实现获取上传进度。接下来我们需要编写一个专门获取上传进度的脚本。

    **Step3:获取上传进度的脚本**

    “`php
    0){
    $percentage = round(($progress / $total) * 100, 2);
    echo $percentage;
    }else{
    echo “0”;
    }
    }
    ?>
    “`

    在以上代码中,我们通过session中的upload_progress和upload_total来计算上传进度的百分比。

    最后,我们需要在前端页面中定时发送请求来获取上传进度并更新页面显示。

    “`javascript
    $(document).ready(function(){
    setInterval(function(){
    $.ajax({
    url: “get_progress.php?progress”,
    success: function(response){
    $(“#progressBar”).val(response);
    $(“#progressText”).html(response + “%”);
    }
    });
    }, 1000);
    });
    “`

    以上就是使用session和Ajax来获取上传进度的方法。这种方法通过不断获取session中的数据来实时更新上传进度,并在前端页面上显示进度条和文本。同时,可以根据需求进一步扩展和优化代码,添加更多的功能和交互效果。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部