浮叶蓝空的博客
分享学习心得,记录学习笔记
文章:
84
访问:
525918
登录
关于
首页
今天是:
2025年09月09日 星期二
类别
PHP(39)
其他笔记(20)
Java(1)
C++(17)
mysql(2)
JavaScript(4)
近期文章
Linux下Cmake引用第三方静态库示例
Linux下使用Cmake构建静态库示例
Ubuntu设置自动挂载硬盘,挂载U盘
压力测试工具Apache JMeter基本使用
使用PHP脚本借助FFmpeg一键合并视频
Shell中的>、1>、2>、2>&1、&>详解
PHP开启多进程实现异步非阻塞并行执行任务
博主推荐
PHP实现文件下载接口
Qt读写注册表,C++读写注册表
PHP动态修改配置文件,存储为文件
MySql常用语法
Powershell远程连接
PHP从字符串中获取需要的内容部分
封装PHP的HTTP请求
PHP实现文件下载接口
fuyelk
2020年04月20日
7816
##### PHP实现文件下载接口,支持断点续传,下载器可以查看文件大小。文件分片传输,内存消耗低。注意:使用时建议增加安全路径限制及可下载文件类型限制 ## PHP实现文件下载接口,支持断点续传 **!注意:此代码未做 路径限制 和 文件类型限制 !建议使用时增加这两项限制** ```php /** * 文件下载 * @param string $file 文件绝对路径 */ 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'); } } ```
上一篇:
http_user_agent真实记录库
下一篇:
PHP将远程资源保存到本地
2人点赞
登录后评论
友情链接
doywb
2018-2025 Copyright© 米灵尔 浮叶蓝空
豫ICP备15007436号-1
豫公网安备 41152302000146号