php断点续传之如何分割合并文件


Posted in PHP onMarch 22, 2014
<?php 
ini_set("memory_limit", "50M");//必须的,根据你环境的实际情况尽量大,防止报错 
ini_set("max_execution_time", "100"); 
//file_exists() 函数检查文件或目录是否存在,存在则返回 true,否则返回 false。 
//fread() 函数读取文件(可安全用于二进制文件)。fread() 从文件指针 file 读取最多 length 个字节。 
//filesize() 函数返回指定文件的大小(字节)。本函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。 
$orgFile = 'Fireworks8-chs.exe';//源文件 
$cacheFileName = 'vbcache';//分割成的临时文件块 
function cutFile($fileName,$block) {//分割 
global $cacheFileName; 
if (!file_exists($fileName)) return false; 
$num = 1; 
$file = fopen($fileName, 'rb'); 
while ($content = fread($file,$block)) { 
$cacheFile = $cacheFileName . $num++ . '.dat'; 
$cfile = fopen($cacheFile, 'wb'); 
fwrite($cfile, $content); 
fclose($cfile); 
} 
fclose($file); 
} 
function mergeFile($targetFile) {//合并 
global $cacheFileName; 
$num = 1; 
$file = fopen($targetFile, 'wb'); 
while ($num > 0) { 
$cacheFile = $cacheFileName . $num++ . '.dat'; 
if (file_exists($cacheFile)) { 
$cfile = fopen($cacheFile, 'rb'); 
$content = fread($cfile, filesize($cacheFile)); 
fclose($cfile); 
fwrite($file, $content); 
} 
else { 
$num = -1; 
} 
} 
fclose($file); 
} 
//调用 
cutFile($orgFile, 10 * pow(2,20)); //10 * pow(2,20) 就等于 10M pow() 函数返回 x 的 y 次方 
mergeFile('ok.exe'); 
?>
PHP 相关文章推荐
分享PHP入门的学习方法
Jan 02 PHP
php教程之魔术方法的使用示例(php魔术函数)
Feb 12 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
May 08 PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
ThinkPHP使用Smarty第三方插件方法小结
Mar 19 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 PHP
PHP中trait使用方法详细介绍
May 21 PHP
php图像验证码生成代码
Jun 08 PHP
PHPTree――php快速生成无限级分类
Mar 30 PHP
PHP变量的作用范围实例讲解
Dec 22 PHP
php 邮件发送问题解决
Mar 22 #PHP
php数组合并的二种方法
Mar 21 #PHP
php数组删除元素示例
Mar 21 #PHP
php动态生成函数示例
Mar 21 #PHP
xss防御之php利用httponly防xss攻击
Mar 21 #PHP
php5.3 goto函数介绍和示例
Mar 21 #PHP
php ctype函数中文翻译和示例
Mar 21 #PHP
You might like
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
vue中使用props传值的方法
2019/05/08 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
python利用微信公众号实现报警功能
2018/06/10 Python
python批量赋值操作实例
2018/10/22 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
2019/01/26 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
UNIX命令速查表
2012/03/10 面试题
电大自我鉴定
2013/10/27 职场文书
标准导师推荐信(医学类)
2013/10/28 职场文书
物流专业大学应届生求职信
2013/11/03 职场文书
甲方资料员岗位职责
2013/12/13 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
服务承诺口号
2014/05/22 职场文书
社区娱乐活动方案
2014/08/21 职场文书
Python超详细分步解析随机漫步
2022/03/17 Python
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技