通过函数完成下载文件的PHP功能代码

function download($url, $filename) {    // 获得文件大小, 防止超过2G的文件, 用sprintf来读    $filesize = sprintf ( "%u", filesize ( $url ) );    if (! $filesize) {        return;    }    header ( "Content-type:application/octet-stream\n" ); //application/octet-stream    header ( "Content-type:unknown/unknown;" );    header ( "Content-disposition: attachment; filename=\"" . $filename . "\"" );    header ( 'Content-transfer-encoding: binary' );    if ($range = getenv ( 'HTTP_RANGE' )) { // 当有偏移量的时候,采用206的断点续传头        $range = explode ( '=', $range );        $range = $range [1];

        header ( "HTTP/1.1 206 Partial Content" );        header ( "Date: " . gmdate ( "D, d M Y H:i:s" ) . " GMT" );        header ( "Last-Modified: " . gmdate ( "D, d M Y H:i:s", filemtime ( $url ) ) . " GMT" );        header ( "Accept-Ranges: bytes" );        header ( "Content-Length:" . ($filesize - $range) );        header ( "Content-Range: bytes " . $range . ($filesize - 1) . "/" . $filesize );        header ( "Connection: close" . "\n\n" );    } else {        header ( "Content-Length:" . $filesize . "\n\n" );        $range = 0;    }    loadFile ( $url );}

function loadFile($filename, $retbytes = true) {    $buffer = '';    $cnt = 0;    $handle = fopen ( $filename, 'rb' );    if ($handle === false) {        return false;    }    while ( ! feof ( $handle ) ) {        $buffer = fread ( $handle, 1024 * 1024 );        echo $buffer;        ob_flush ();        flush ();        if ($retbytes) {            $cnt += strlen ( $buffer );        }    }    $status = fclose ( $handle );    if ($retbytes && $status) {        return $cnt; // return num. bytes delivered like readfile() does.    }    return $status;}输入2个参数即可完成下载
download($url, $filename)

转载于:https://www.cnblogs.com/carlo-jie/p/5505531.html

php 下载文件的函数相关推荐

  1. 族谱树php源代码下载,PHP下载文件的函数实例代码

    通过函数完成下载文件的PHP功能代码 function download($url, $filename) { // 获得文件大小, 防止超过2G的文件, 用sprintf来读 $filesize = ...

  2. php下载文件与服务器有关吗,php 下载文件功能中下载后文件大小与服务器源文件大小不一致...

    1.根据网上下载文件的函数 public function putFile($file_dir, $file_name){ $file_dir = chop($file_dir);//去掉路径中多余的 ...

  3. Python-玩转数据-python ftp下载文件

    一.说明 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于下载文件,函数列举如下: ftp登陆连接 from ftplib import FTP ...

  4. 腾讯对象存储服务COS加密签名上传文件与下载文件的剖析,福利提供给所有使用Android的小伙伴们!

    在做一些用户需求的时候,公司往往需要工程师采集到更多有用的关于用户的个人信息,然后对用户群进行分析,今天我不是来分析这些的,今天我主要是说 腾讯推出的款云产品,那就是对象存储服务COS,这个产品面向所 ...

  5. php保存文件和下载文件到本地的四种方法

    php保存文件和下载文件到本地的四种方法   本文操作环境:windows7系统.PHP7.1版,DELLG3电脑   php保存文件的方法   PHP下载保存文件到本地   经常需要点击按钮,然后弹 ...

  6. python单击url下载网页文件_使用不带url的python脚本从网页下载文件,调用onClick函数 - javascript...

    有一个网页带有链接"单击下载",单击该链接可以下载文件. 我可以通过转到网页并单击此链接来手动下载此文件,但是我需要通过python脚本下载此文件. 如果我看到源代码,则可以看到锚 ...

  7. php fopen下载文件,php fopen下载远程文件的函数 | 学步园

    //下载附件 function get_file($url, $folder = "./") { set_time_limit (24 * 60 * 60); // 设置超时时间 ...

  8. php抓取curl下载文件,PHP 利用 Curl 函数实现多线程抓取网页和下载文件

    PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,然而因为php语言本身不支持多线程,所以开发爬虫程序效率并不高,因此经常需要借助Cur ...

  9. 用python下载文件的若干种方法汇总

    压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...

最新文章

  1. opengl之自动纹理
  2. 基本蚁群算法的C++源程序
  3. linux 占用内存 脚本,linux内存测试(占用)脚本
  4. mysql中难以理解的sql
  5. string类的实现(构造函数,析构函数,运算符重载)
  6. 为什么BDLocationListener没有被调用
  7. POJ 1323 Game Prediction#贪心
  8. 根据IP地址获取主机名称
  9. 【Kafka】Kafka WARN Failed to send SSL Close message
  10. html无序列表只能横着排吗,[三地连线走势图]css 怎样让无序列表 横着排列
  11. 树莓派外设、模块、传感器 —— 数码管(F3461BH)
  12. UnityShader10:CG标准函数库
  13. 【转】cron表达式详解
  14. 单引号、双引号、倒引号
  15. MFC获取电脑硬盘序列号(附源码)
  16. java html网页生成pdf文件,html 网页生成pdf 文件
  17. 支付宝报错“暂时无法获取订单信息,请稍后再试”解决方法
  18. Qt tableWidget导入\导出Excel表格
  19. 3D图像重建中的颜色预测误差研究
  20. rv1109/rv1126 编译并部署QT项目(详解)

热门文章

  1. angular学习笔记(二十五)-$http(3)-转换请求和响应格式
  2. SQL中的重复记录操作
  3. 系统架构设计的工程与艺术(0)
  4. 剑指Offer(Java实现)删除链表中重复的结点
  5. 哈夫曼编码(Huffman)Java实现代码
  6. 读张鸣-《辛亥:摇晃的中国》感
  7. Acronis Disk Director Suite(windows7分区工具)
  8. Begin Your Service Journey
  9. Redis的常用命令——String的常用命令
  10. Vue常用特性——表单操作、表单域修饰符(number:转化为数值 ;trim:去掉开始和结尾的空格 ; lazy : 将input事件切换为change事件)||自定义指令|| 局部指令