PHP函数封装之文件下载

李金龙
李金龙
管理员
861
文章
0
粉丝
PHPPHP函数封装之文件下载已关闭评论1,761字数 523阅读模式

文件下载

  1. //文件下载函数封装
  2. function down_file(string $filename,array $allowDownExt=['jpg','png','jpeg','txt','zip','gz']){
  3.     //检测下载文件是否存在,并且可读
  4.     if(!is_file($filename)||!is_readable($filename)){
  5.         return false;
  6.     }
  7.     //检测文件类型是否运行下载
  8.     //strtolower,转小写
  9.     //pathinfo 返回文件路径的信息,有一个可选参数,参数包含四个内容,本次使用的是获取扩展名
  10.     $ext = strtolower(pathinfo($filename,PATHINFO_EXTENSION));
  11.     //判断要下载内容的扩展是否在数组中
  12.     if (!in_array($ext,$allowDownExt)){
  13.         return false;
  14.     }
  15.     //通过header()发送头信息
  16.     //告诉浏览器输出的是字节流
  17.     header('content-type:application/octet-stream');
  18.     //告诉浏览器返回的文件大小是按字节进行计算的
  19.     header('Accept-Ranges:bytes');
  20.     //告诉浏览器返回的文件大小
  21.     header('Accept-Length'.filesize($filename));
  22.     //告诉浏览器文件作为附件处理,告诉浏览器最终下载完的文件名称
  23.     header('Content-Dispostion:attachment;filename='.basename($filename));
  24.     //读取文件中的内容
  25.     echo readfile($filename);
  26.     exit;
  27. }

 

切片下载

  1. //文件切片下载函数封装
  2. function down_file1(string $filename,array $allowDownExt=['jpg','png','jpeg','txt','zip','gz']){
  3.     //检测下载文件是否存在,并且可读
  4.     if(!is_file($filename)||!is_readable($filename)){
  5.         return false;
  6.     }
  7.     //检测文件类型是否运行下载
  8.     //strtolower,转小写
  9.     //pathinfo 返回文件路径的信息,有一个可选参数,参数包含四个内容,本次使用的是获取扩展名
  10.     $ext = strtolower(pathinfo($filename,PATHINFO_EXTENSION));
  11.     //判断要下载内容的扩展是否在数组中
  12.     if (!in_array($ext,$allowDownExt)){
  13.         return false;
  14.     }
  15.     //通过header()发送头信息
  16.     //告诉浏览器输出的是字节流
  17.     header('content-type:application/octet-stream');
  18.     //告诉浏览器返回的文件大小是按字节进行计算的
  19.     header('Accept-Ranges:bytes');
  20.     $filesize =filesize($filename);
  21.     //告诉浏览器返回的文件大小
  22.     header('Accept-Length'.$filesize);
  23.     //告诉浏览器文件作为附件处理,告诉浏览器最终下载完的文件名称
  24.     header('Content-Dispostion:attachment;filename='.basename($filename));
  25.     //规定每次读取文件的字节数为1024字节,直接输出数据
  26.     $read_buffer=1024;
  27.     $sum_buffer=0;
  28.     $handle = fopen($filename,'rb');
  29.     while (!feof($handle) && $sum_buffer < $filesize){
  30.         echo fread($handle,$read_buffer);
  31.         $sum_buffer+=$read_buffer;
  32.     }
  33.     fclose($handle);
  34.     exit;
  35. }

 
李金龙
  • 本文由 李金龙 发表于2018年1月23日 14:59:21
  • 转载请务必保留本文链接:https://www.lijinlong.cc/php/2576.html
dede教程

网站搬家中数据库导入N种办法汇总帖。

网站搬家教程之前写过一篇,可很多的时候,你会发现这个方式不可行,那么就有了备选的思路。 之前的网站中使用了两种的搬家方式:直接phpmyadmin上面下载导出导入、通过程序后台的数据库备份与还原。 今...
PHP

php小工具读取文件内容,并换算大小

获取文件信息 function get_file_info(string $filename){     //is_readabl,判断给定文件名是否存在并且可读。     //is_file判断给定...