php怎么实现下载进度条

技术php怎么实现下载进度条本篇内容主要讲解“php怎么实现下载进度条”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么实现下载进度条”吧!

本文主要讲解“如何在php中实现下载进度条”,感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习“如何用php实现下载进度条”!

php下载进度条的方法如下:1。创建一个“download.php”文件,代码为“switch($ action){ case ' prepare-download '.}";2.创建js代码来显示进度条。

php怎么实现下载进度条

操作环境:Windows7系统,PHP 7.1版本,DELL G3电脑。

php如何实现下载进度条?

PHP 远程文件下载的进度条实现

download.php

?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

//当前文件:download.php。

$ action=@ $ _ GET[' action '];

//自己获取这些信息。

$ remote _ URL=get _ remote _ file _ URL();

$ file _ size=get _ remote _ file _ size($ remote _ URL);

$ tmp _ path=get _ tmp _ path();

开关($ action){ 0

案例“准备-下载”:

//下载缓存文件夹。

$download_cache=__DIR__。/download _ cache ';

if(!is _ dir($ download _ cache)){ 0

if(false===mkdir($ download _ cache)){ 0

退出('无法创建下载缓存文件夹,请检查目录权限。');

}

}

$tmp_path=$download_cache。/update_ '。时间()。zip ';

save _ tmp _ path();//在此保存临时文件地址。

returnjson(compact('remote_url ',' tmp_path ',' file _ size '));

打破;

案例“开始-下载”:

//检查此处是否存在tmp_path。

尝试{

n

bsp;  set_time_limit(0);
            touch($tmp_path);
            // 做些日志处理
            if ($fp = fopen($remote_url, "rb")) {
                if (!$download_fp = fopen($tmp_path, "wb")) {
                    exit;
                }
                while (!feof($fp)) {
                    if (!file_exists($tmp_path)) {
                        // 如果临时文件被删除就取消下载
                        fclose($download_fp);
                        exit;
                    }
                    fwrite($download_fp, fread($fp, 1024 * 8 ), 1024 * 8);
                }
                fclose($download_fp);
                fclose($fp);
            } else {
                exit;
            }
        } catch (Exception $e) {
            Storage::remove($tmp_path);
            exit('发生错误:'.$e->getMessage());
        }
        return json(compact('tmp_path'));
        break;
    case 'get-file-size':
        // 这里检测下 tmp_path 是否存在
        if (file_exists($tmp_path)) {
            // 返回 JSON 格式的响应
            return json(['size' => filesize($tmp_path)]);
        }
        break;
    default:
        # code...
        break;
}

js

// 咋触发这个函数我就不举例了
function downloadFile() {
    var file_size = 0;
    var progress  = 0;
    console.log("Prepared to download");
    $.ajax({
        url: './download.php?action=prepare-download',
        type: 'GET',
        dataType: 'json',
        beforeSend: function() {
            $('#update-button').html('<i class="fa fa-spinner fa-spin"></i> 正在准备').prop('disabled', 'disabled');
        },
    })
    .done(function(json) {
        console.log(json);
        file_size = json.file_size;
        $('#file-size').html(file_size);
        // 显示进度条
        console.log("started downloading");
        $.ajax({
            url: './download.php?action=start-download',
            type: 'POST',
            dataType: 'json'
        })
        .done(function(json) {
            // set progress to 100 when got the response
            progress = 100;
            console.log("Downloading finished");
            console.log(json);
        })
        .fail(showAjaxError);
        var interval_id = window.setInterval(function() {
            $('#imported-progress').html(progress);
            $('.progress-bar').css('width', progress+'%').attr('aria-valuenow', progress);
            if (progress == 100) {
                clearInterval(interval_id);
                // 到此远程文件下载完成,继续其他逻辑
            } else {
                $.ajax({
                    url: './download.php?action=get-file-size',
                    type: 'GET'
                })
                .done(function(json) {
                    progress = (json.size / file_size * 100).toFixed(2);
                    updateProgress(progress);
                    console.log("Progress: "+progress);
                })
                .fail(showAjaxError);
            }
        }, 300);
    })
    .fail(showAjaxError);
}

到此,相信大家对“php怎么实现下载进度条”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/53565.html

(0)

相关推荐

  • 抖音20元1000粉丝网站,刷抖音粉丝的好处有哪些?

    技术抖音20元1000粉丝网站,刷抖音粉丝的好处有哪些?根据小编的了解,现在可以说在全民各行各业各个年龄层都大火的抖音短视频吸粉的速度也是十分快速的,而上面有很多网红粉丝量已经让人眼前一亮,大大惊艳了吃瓜群众。甚至有的普

    测评 2021年10月21日
  • MySQL常用拼接语句有哪些

    技术MySQL常用拼接语句有哪些这篇文章给大家分享的是有关MySQL常用拼接语句有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.拼接查询所有用户SELECT DISTINCT

    攻略 2021年10月30日
  • Puppeteer怎么启动交互模式

    技术Puppeteer怎么启动交互模式这篇文章主要讲解了“Puppeteer怎么启动交互模式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Puppeteer怎么启动交互模

    攻略 2021年10月21日
  • 宫寒不孕症状,不孕的原因就只是“宫寒”吗

    技术宫寒不孕症状,不孕的原因就只是“宫寒”吗日常生活中我们经常会听到有人说怀不上孩子是因为“宫寒”宫寒不孕症状,这其实是一个误区。不孕是有多种原因导致的生育状态障碍,男女双方因素都有,在这里我们主要谈论女性因素导致的不孕

    生活 2021年10月27日
  • 怎么使用JS

    技术怎么使用JS本篇内容主要讲解“怎么使用JS”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用JS”吧!1. Function 构造函数Function()构造函数虽然

    攻略 2021年10月30日
  • python中怎么处理逗号(python中逗号怎么输入)

    技术Python中怎么用逗号这篇文章主要讲解了“Python中怎么用逗号”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中怎么用逗号”吧!1 逗号分割列表,元组

    攻略 2021年12月17日