广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php怎么实现下载断点续传
  • 168
分享到

php怎么实现下载断点续传

2024-04-02 19:04:59 168人浏览 安东尼
摘要

本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php怎么实现下载断点续传?php实现文件下载,支持断点续传我一般废话比较少,直接甩代码,不懂扣我,再不懂就只能扣脚丫了,OK?PHP实现文件下载接口,支持断点续传,

教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。

php怎么实现下载断点续传?

php实现文件下载,支持断点续传

我一般废话比较少,直接甩代码,不懂扣我,再不懂就只能扣脚丫了,OK?

PHP实现文件下载接口,支持断点续传,下载器可以查看文件大小。文件分片传输,内存消耗低。注意:使用时建议增加安全路径限制及可下载文件类型限制


function download($file)
{
    str_replace(['/','\\'], DIRECTORY_SEPARATOR, $file);
    //检查文件是否存在
    if (empty($file) or !is_file($file)) {
        die('文件不存在');
    }
    $fileName = basename($file);
    //以只读和二进制模式打开文件
    $fp = @fopen($file, 'rb');
    if ($fp) {
        // 获取文件大小
        $file_size = filesize($file);
        //告诉浏览器这是一个文件流格式的文件
        header('content-type:application/octet-stream');
        header('Content-Disposition: attachment; filename=' . $fileName);
        // 断点续传
        $range = null;
        if (!empty($_SERVER['Http_RANGE'])) {
            $range = $_SERVER['HTTP_RANGE'];
            $range = preg_replace('/[\s|,].*/', '', $range);
            $range = explode('-', substr($range, 6));
            if (count($range) < 2) {
                $range[1] = $file_size;
            }
            $range = array_combine(array('start', 'end'), $range);
            if (empty($range['start'])) {
                $range['start'] = 0;
            }
            if (empty($range['end'])) {
                $range['end'] = $file_size;
            }
        }
        // 使用续传
        if ($range != null) {
            header('HTTP/1.1 206 Partial Content');
            header('Accept-Ranges:bytes');
            // 计算剩余长度
            header(sprintf('content-length:%u', $range['end'] - $range['start']));
            header(sprintf('content-range:bytes %s-%s/%s', $range['start'], $range['end'], $file_size));
            // fp指针跳到断点位置
            fseek($fp, sprintf('%u', $range['start']));
        } else {
            header('HTTP/1.1 200 OK');
            header('Accept-Ranges:bytes');
            header('content-length:' . $file_size);
        }
        while (!feof($fp)) {
            echo fread($fp, 4096);
            ob_flush();
        }
        fclose($fp);
    } else {
        die('File loading failed');
    }
}

以上就是php怎么实现下载断点续传的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: php怎么实现下载断点续传

本文链接: https://www.lsjlt.com/news/117050.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php怎么实现下载断点续传
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php怎么实现下载断点续传?PHP实现文件下载,支持断点续传我一般废话比较少,直接甩代码,不懂扣我,再不懂就只能扣脚丫了,OK?PHP实现文件下载接口,支持断点续传,...
    99+
    2022-11-06
  • php如何实现下载断点续传
    本篇内容介绍了“php如何实现下载断点续传”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php实现下载断点续传的方法:1、创建一个php示例...
    99+
    2023-07-04
  • iOS怎么使用NSURLConnection实现断点续传下载
    本篇内容介绍了“iOS怎么使用NSURLConnection实现断点续传下载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.断点续传的原理...
    99+
    2023-06-30
  • Android(Java)下载断点续传的实现
    Android(Java)下载断点续传的实现一、要注意的地方1. 追加文件2. 跳过输入流3.range header坑点1.坑点2坑点3.二、...
    99+
    2022-06-06
    JAVA 断点续传 断点 Android
  • C#怎样实现文件下载断点续传
    目录前言文件下载-服务端使用a标签提供文件下载使用Response.TransmitFile提供文件下载其他方式文件下载文件下载-客户端直接下载异步下载断点续传断点续传(服务端的支持...
    99+
    2022-11-12
  • iOS使用NSURLConnection实现断点续传下载
    本文实例为大家分享了iOS使用NSURLConnection实现断点续传下载的具体代码,供大家参考,具体内容如下 一.断点续传的原理 断点续传的原理:每次在想服务器请求下载数据的同时...
    99+
    2022-11-13
  • Java实现多线程下载和断点续传
    java的多线程下载能够明显提升下载的速度,平时我们用的迅雷软件之所以能够下载那么快,就是使用了多线程;当用户在下载的过程中,有断电或断网的可能,当用户再次点击下载时,应该让用户接着...
    99+
    2022-11-13
  • python 文件下载之断点续传的实现
    目录1.前序2.技术原理2.1 Content-Range2.2 Range3. 代码实现1.前序 当下载突然断开后,断点续传就需要了,继续前面下载的内容下载。解决了不需要重复下载 ...
    99+
    2022-11-12
  • 利用断点续传实现下载的原理是什么
    今天就跟大家聊聊有关利用断点续传实现下载的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。HTTP断点续传报文要实现HTTP断点续传必须要简单了解以下几个报文。Accept-...
    99+
    2023-05-31
    断点续传
  • Android通过HTTP协议实现断点续传下载实例
    整理文档,搜刮出一个Android通过HTTP协议实现断点续传下载的代码,稍微整理精简一下做下分享。 FileDownloader.java   ...
    99+
    2022-06-06
    HTTP 断点续传 断点 http协议 Android
  • Android实现网络多线程断点续传下载实例
    我们编写的是Andorid的HTTP协议多线程断点下载应用程序。直接使用单线程下载HTTP文件对我们来说是一件非常简单的事。那么,多线程断点需要什么功能? 1.多线程下载, ...
    99+
    2022-06-06
    多线程 断点续传 断点 线程 Android
  • Android实现网络多线程断点续传下载功能
    我们编写的是Andorid的HTTP协议多线程断点下载应用程序。直接使用单线程下载HTTP文件对我们来说是一件非常简单的事。那么,多线程断点需要什么功能? 1.多线程下载 2...
    99+
    2022-06-06
    多线程 断点续传 断点 线程 Android
  • Android多线程断点续传下载功能实现代码
    原理 其实断点续传的原理很简单,从字面上理解,所谓断点续传就是从停止的地方重新下载。 断点:线程停止的位置。 续传:从停止的位置重新下载。 用代码解析就是: 断点:当...
    99+
    2022-06-06
    android多线程 断点续传 断点 线程 Android
  • Flutter实现资源下载断点续传的示例代码
    目录协议梳理实现步骤写在最后协议梳理 一般情况下,下载的功能模块,至少需要提供如下基础功能:资源下载、取消当前下载、资源是否下载成功、资源文件的大小、清除缓存文件。而断点续传主要体现...
    99+
    2022-11-13
  • golang实现多协程下载文件(支持断点续传)
    引言 写这篇文章主要是周末休息太无聊,看了看别人代码,发现基本上要么是多协程下载文件要么就只有单协程的断点续传,所以就试了试有进度条的多协程下载文件(支持断点续传) packa...
    99+
    2022-11-12
  • Android中怎么利用FTP实现多线程断点续传下载上传功能
    Android中怎么利用FTP实现多线程断点续传下载上传功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。FTP下载原理FTP单线程断点续传FTP和传统的HTT...
    99+
    2023-05-30
    android
  • 怎么在Android中实现一个多线程断点续传下载功能
    本篇文章给大家分享的是有关怎么在Android中实现一个多线程断点续传下载功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、布局实现具体布局内容如下:<LinearL...
    99+
    2023-05-30
    android
  • Node.js实现断点续传
    目录方案分析 切片 断点续传 具体解决流程 逻辑分析 前端 服务端 小结 方案分析 切片 就是对上传视频进行切分,具体操作为: File.slice(start...
    99+
    2022-11-12
  • golang后端怎么实现断点续传
    在Go语言的后端中,实现断点续传可以通过以下几个步骤来完成:1. 客户端请求文件时,需要在HTTP请求的头部加上Range字段,指定...
    99+
    2023-10-20
    golang
  • 使用Node.js怎么实现断点续传
    本篇文章为大家展示了使用Node.js怎么实现断点续传,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。方案分析切片拷贝blob的起始字节拷贝blob的结束字节就是对上传视频进行切分,具体操作为:Fil...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作