开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介:
+关注继续查看

wKioL1L7MQSTFjsnAAKa3CEUI5Q764.jpg


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?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($cfilefilesize($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');
?>


源码下载:http://down.51cto.com/data/1081444



最近在研究php断点续传上传文件(要求不能使用swf插件),算是有点进展吧!

思路01:将文件分割成若干部分,后台一个一个接收合并,并记录下当前合并成功到了第几个。下此从这个开始合并,直到合并完成。判断:生成文件的大小和文件md5码是否一致。返回true or false。


思路02:文件流。通过记录指针写入文件。记录这次写到了第几针,下次从这里开始写。




继续研究中......







      本文转自许琴 51CTO博客,原文链接:http://blog.51cto.com/xuqin/1358490,如需转载请自行联系原作者




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PHP获取文件后缀名
PHP获取文件后缀名
42 0
查找php.ini文件
查找php.ini文件
31 0
使用PHP配置文件
/**************************************************************************************** * 使用PHP配置文件 * 说明: * 最近要涉及PHP,现在一般都不喜欢将参数进行硬编码,所以查找一下PHP中怎么使用配置文件, * 这个在将来需要对参数进行修改的场合是非常划算的,内容都在参考文档里。
538 0
PHP.ini文件读取不到
Configuration File (php.ini) Path /usr/local/php/lib Loaded Configuration File (none) Linux 把 dtruss 改成strace 就可以 我的是mac的系统 jackluo@JackLu...
773 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
复杂PHP系统性能瓶颈排查及优化
立即下载
yqdh_58c127b2209...1510402321.pdf
立即下载
yqdh_58c12797679...1510402245.pdf
立即下载