diff --git a/apps/dav/lib/Connector/Sabre/Directory.php b/apps/dav/lib/Connector/Sabre/Directory.php
index ede81703968e55b57b8fbd4c45dce64b2410d84c..cb9a4121d1b55492f4231ab02ae15b763b90860b 100644
--- a/apps/dav/lib/Connector/Sabre/Directory.php
+++ b/apps/dav/lib/Connector/Sabre/Directory.php
@@ -51,7 +51,7 @@ use Sabre\DAV\Exception\ServiceUnavailable;
 use Sabre\DAV\IFile;
 use Sabre\DAV\INode;
 
-class Directory extends \OCA\DAV\Connector\Sabre\Node implements \Sabre\DAV\ICollection, \Sabre\DAV\IQuota, \Sabre\DAV\IMoveTarget {
+class Directory extends \OCA\DAV\Connector\Sabre\Node implements \Sabre\DAV\ICollection, \Sabre\DAV\IQuota, \Sabre\DAV\IMoveTarget, \Sabre\DAV\ICopyTarget {
 
 	/**
 	 * Cached directory content
@@ -394,7 +394,7 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node implements \Sabre\DAV\ICol
 			throw new \Sabre\DAV\Exception\Forbidden('Could not copy directory ' . $sourceNode->getName() . ', target exists');
 		}
 
-		list($sourceDir,) = \Sabre\Uri\split($sourceNode->getPath());
+		[$sourceDir,] = \Sabre\Uri\split($sourceNode->getPath());
 		$destinationDir = $this->getPath();
 
 		$sourcePath = $sourceNode->getPath();
@@ -449,4 +449,26 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node implements \Sabre\DAV\ICol
 
 		return true;
 	}
+
+
+	public function copyInto($targetName, $sourcePath, INode $sourceNode) {
+		if ($sourceNode instanceof File) {
+			$destinationPath = $this->getPath() . '/' . $targetName;
+			$sourcePath = $sourceNode->getPath();
+
+			if (!$this->fileView->isCreatable($this->getPath())) {
+				throw new \Sabre\DAV\Exception\Forbidden();
+			}
+
+			try {
+				$this->fileView->verifyPath($this->getPath(), $targetName);
+			} catch (InvalidPathException $ex) {
+				throw new InvalidPath($ex->getMessage());
+			}
+
+			return $this->fileView->copy($sourcePath, $destinationPath);
+		}
+
+		return false;
+	}
 }