diff --git a/lib/private/files/storage/local.php b/lib/private/files/storage/local.php index aa2b462828..f6f5a8cc13 100644 --- a/lib/private/files/storage/local.php +++ b/lib/private/files/storage/local.php @@ -252,7 +252,15 @@ class Local extends \OC\Files\Storage\Common { } public function free_space($path) { - $space = @disk_free_space($this->getSourcePath($path)); + $sourcePath = $this->getSourcePath($path); + // using !is_dir because $sourcePath might be a part file or + // non-existing file, so we'd still want to use the parent dir + // in such cases + if (!is_dir($sourcePath)) { + // disk_free_space doesn't work on files + $sourcePath = dirname($sourcePath); + } + $space = @disk_free_space($sourcePath); if ($space === false || is_null($space)) { return \OCP\Files\FileInfo::SPACE_UNKNOWN; }