最近做了修改owncloud云盘的项目。

owncloud本身是一个私有云盘,用到本地目录,项目要求是存储到FTP后转存到FAST,所以需要修改很多相关的东西。

一、首先是进入文件列表时的选择根目录,可以在如下文件中修改即可:

\owncloud\apps\files\js\filelist.js中的

_setCurrentDir: function(targetDir, changeUrl) {
这个js方法,在其中加入判断直接进入FTP目录:

if(targetDir=="/"){
   targetDir="/FTP";
}

二、禁止web端本地上传

\owncloud\apps\files\ajax\upload.php

中的20行后加入判断:

if($dir=="/"){
   OCP\JSON::
error(array('data'=> array_merge(array('message'=>$l->t('Unable to Upload!!')))));
   die
();
}     

即可禁用web的本地上传功能。

三、删除文件本地也会复制问题

\owncloud\lib\private\files\view.php

中的rename方法中的

$source = $this->fopen($path1 . $postFix1, 'r');
$target = $this->fopen($path2 . $postFix2, 'w');
list(, $result) = \OC_Helper::streamCopy($source, $target);
if ($result !== false) {
   $this->touch($path2, $this->filemtime($path1));
}

// close open handle - especially $source is necessary because unlink below will
// throw an exception on windows because the file is locked
fclose($source);
fclose($target);

if ($result !== false) {
   $result &= $storage1->unlink($internalPath1);
} else {
   // delete partially written target file
   $storage2->unlink($internalPath2);
   // delete cache entry that was created by fopen
   $storage2->getCache()->remove($internalPath2);
}
直接改为$result= $storage1 -> unlink ( $internalPath1 ) ;

 四、PC客户端同步目录问题,过滤目录位置

\owncloud\3rdparty\sabre\dav\lib\Sabre\DAV\Property\Response.php中的

serialize方法,此方法会返回客户端需要的关于文件目录的信息的xml中的内容
五、除去初始化生成的文件和文件夹

E:\wamp2.5\www\owncloud\lib\private\server.php

中的394行注释掉

即下面这一行:
\OC_Util::copySkeleton($user, $folder);
注释掉,其实他的初始化文件放在了E:\wamp2.5\www\owncloud\core\skeleton文件夹中
以上只是部分修改,只针对8.0.4版本做出

需要说明的是客户端同步都是走的webdev也就是sabredav的第三方类库,需要进一步研究的话可以看一下sabredav

如果也有同学在学习,希望能多交流


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐