diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2014-07-22 13:06:20 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2014-07-22 15:49:20 +0200 |
commit | 61d99672216aa5972c4d852619ec6835a43ca97f (patch) | |
tree | c3cde0aceccd926ee120c6f8efac9c5d2f135c03 /lib/private/connector/sabre | |
parent | 508fd159756213d47164f40a5ebed31f581d2aa0 (diff) | |
download | nextcloud-server-61d99672216aa5972c4d852619ec6835a43ca97f.tar.gz nextcloud-server-61d99672216aa5972c4d852619ec6835a43ca97f.zip |
adding special handling of checkPrecondition() for chunked upload
Diffstat (limited to 'lib/private/connector/sabre')
-rw-r--r-- | lib/private/connector/sabre/server.php | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/private/connector/sabre/server.php b/lib/private/connector/sabre/server.php index e4ee5dcefbf..aaf4fe85af9 100644 --- a/lib/private/connector/sabre/server.php +++ b/lib/private/connector/sabre/server.php @@ -29,6 +29,37 @@ class OC_Connector_Sabre_Server extends Sabre\DAV\Server { /** + * @var string + */ + private $overLoadedUri = null; + + public function getRequestUri() { + + if (!is_null($this->overLoadedUri)) { + return $this->overLoadedUri; + } + + return parent::getRequestUri(); + } + + public function checkPreconditions($handleAsGET = false) { + // chunked upload handling + if (isset($_SERVER['HTTP_OC_CHUNKED'])) { + $filePath = parent::getRequestUri(); + list($path, $name) = \Sabre\DAV\URLUtil::splitPath($filePath); + $info = OC_FileChunking::decodeName($name); + if (!empty($info)) { + $filePath = $path . '/' . $info['name']; + $this->overLoadedUri = $filePath; + } + } + + $result = parent::checkPreconditions($handleAsGET); + $this->overLoadedUri = null; + return $result; + } + + /** * @see \Sabre\DAV\Server */ protected function httpPropfind($uri) { |