owncloud源码分析7--客户端上传2

来源:互联网 发布:绿色破解版软件 编辑:程序博客网 时间:2024/05/29 16:07

之前已经介绍了客户端上传文件的位置,但是后来实践发现只有小文件走owncloud\lib\private\connector\sabre\file.php中的put方法,大文件并没有走,进一步探讨发现对于客户端上传大文件,owncloud会进行拆分上传再整合的方式,为什么这样,我做了个测试:

首先可以确定在大文件上传时,走的方法是:owncloud\lib\private\connector\sabre\file.php中的createFileChunked方法,跟进方法里面进一步找到了下面的方法:

\owncloud\lib\private\filechunking.php中的file_assemble,见文知意,也就是文件整合的方法,然后其中的assemble方法中的$this->remove()注释掉,则会在对应的用户的当前用户名下面的cache文件下发现有一堆拆分的文件,如下图:


可以看到有很多的小文件,而且可以看出拆分的大小为5120kb。那么如何整合这些文件成原文件呢,于是我又测试了一下自己写的整合方法:

首先我将以上文件复制到apache下的think文件夹下,然后运行了一下的php文件:

<?php
echo 222;
$fo=fopen("5.rar","a");
for($i=0;$i<15;$i++){
$content = file_get_contents("think/thinksns.zip-chunking-3572855997-".$i);
$flag=fwrite($fo, $content);
if(!$flag){
break;
echo "挂了!";
}
}
fclose($fo);
echo("SUCCESS!!");
?>

页面输出:222SUCCESS!!


然后再看我的www目录下:


出现了我要生成的5.rar文件,打开发现和原来的压缩文件没有区别,即成功的恢复了这个文件。

这是原文件:


大小和使用都没有问题,OK了

0 0
原创粉丝点击