最近做了修改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
$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
如果也有同学在学习,希望能多交流