php实现大文件断点续传下载实例,看完你就知道超过100M以上的大文件如何断点传输了,这个功能还是比较经典实用的,毕竟大文件上传功能经常用得到。

require_once('download.class.php'); date_default_timezone_set('Asia/Shanghai'); error_reporting(E_STRICT); function errorHandler($errno, $errstr, $errfile, $errline) { echo 'error:', $errstr, '
'; exit(); } set_error_handler('errorHandler'); define('IS_DEBUG', true); $filePath = 'test.zip'; $mimeType = 'audio/x-matroska'; $range = isset($_SERVER['HTTP_RANGE']) ? $_SERVER['HTTP_RANGE'] : null; if (IS_DEBUG) { // $range = "bytes=1000-1999\n2000"; // $range = "bytes=1000-1999,2000"; // $range = "bytes=1000-1999,-2000"; // $range = "bytes=1000-1999,2000-2999"; } set_time_limit(0); $transfer = new Transfer($filePath, $mimeType, $range); if (IS_DEBUG) { $transfer->setIsLog(true); } $transfer->send();download.class.php
/** * 文件传输,支持断点续传。 * 2g以上超大文件也有效 * @author MoXie */ class Transfer { /** * 缓冲单元 */ const BUFF_SIZE = 5120; // 1024 * 5 /** * 文件地址 * @var */ private $filePath; /** * 文件大小 * @var Php超大数字 字符串形式描述 */ private $fileSize; /** * 文件类型 * @var */ private $mimeType; /** * 请求区域(范围) * @var */ private $range; /** * 是否写入日志 * @var */ private $isLog = false; /** * * @param $filePath 文件路径 * @param $mimeType 文件类型 * @param $range 请求区域(范围) */ function __construct($filePath, $mimeType = null, $range = null) { $this->filePath = $filePath; $this->fileSize = sprintf('%u', filesize($filePath)); $this->mimeType = ($mimeType != null) ? $mimeType : "application/octet-stream"; // bin $this->range = trim($range); } /** * 获取文件区域 * @return 总结
以上所述是小编给大家介绍的php实现大文件断点续传下载实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
提示:
本文由神整理自网络,如有侵权请联系本站删除!
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!