implement file_put_contents with stream data using fopen

This commit is contained in:
Robin Appelman 2012-02-15 16:23:00 +01:00
parent 6a8364c3ff
commit c121a1a1e7
2 changed files with 16 additions and 6 deletions

View File

@ -70,11 +70,7 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
public function preFile_put_contents($path,&$data){
if(self::shouldEncrypt($path)){
if (is_resource($data)) {
$id=md5($path);
OC_CryptStream::$sourceStreams[$id]=array('path'=>$path,'stream'=>$data);
$data=fopen('crypt://streams/'.$id,'r');
}else{
if (!is_resource($data)) {//stream put contents should have been converter to fopen
$data=OC_Crypt::blockEncrypt($data);
}
}

View File

@ -163,7 +163,21 @@ class OC_FilesystemView {
return $this->basicOperation('file_get_contents',$path,array('read'));
}
public function file_put_contents($path,$data){
return $this->basicOperation('file_put_contents',$path,array('create','write'),$data);
if(is_resource($data)){//not having to deal with streams in file_put_contents makes life easier
$target=$this->fopen($path,'w');
if($target){
while(!feof($data)){
fwrite($target,fread($data,8192));
}
fclose($target);
fclose($data);
return true;
}else{
return false;
}
}else{
return $this->basicOperation('file_put_contents',$path,array('create','write'),$data);
}
}
public function unlink($path){
return $this->basicOperation('unlink',$path,array('delete'));