Give storage backends the option to define having no known free space

When this is the case only the configured max upload size is taking into account for uploading
This commit is contained in:
Robin Appelman 2013-02-16 03:27:50 +01:00
parent 425d41aaf9
commit d96146a017
9 changed files with 19 additions and 21 deletions

View File

@ -48,7 +48,7 @@ $totalSize = 0;
foreach ($files['size'] as $size) {
$totalSize += $size;
}
if ($totalSize > \OC\Files\Filesystem::free_space($dir)) {
if ($totalSize > $maxUploadFilesize) {
OCP\JSON::error(array('data' => array('message' => $l->t('Not enough storage available'),
'uploadMaxFilesize' => $maxUploadFilesize,
'maxHumanFilesize' => $maxHumanFilesize)));

View File

@ -229,11 +229,6 @@ class AmazonS3 extends \OC\Files\Storage\Common {
return false;
}
public function free_space($path) {
// Infinite?
return false;
}
public function touch($path, $mtime = null) {
if (is_null($mtime)) {
$mtime = time();

View File

@ -241,10 +241,6 @@ class SFTP extends \OC\Files\Storage\Common {
}
}
public function free_space($path) {
return -1;
}
public function touch($path, $mtime=null) {
try {
if (!is_null($mtime)) return false;

View File

@ -76,10 +76,6 @@ abstract class StreamWrapper extends \OC\Files\Storage\Common{
return fopen($this->constructUrl($path), $mode);
}
public function free_space($path) {
return 0;
}
public function touch($path, $mtime=null) {
$this->init();
if(is_null($mtime)) {

View File

@ -478,10 +478,6 @@ class SWIFT extends \OC\Files\Storage\Common{
}
}
public function free_space($path) {
return 1024*1024*1024*8;
}
public function touch($path, $mtime=null) {
$this->init();
$obj=$this->getObject($path);

View File

@ -222,7 +222,7 @@ class DAV extends \OC\Files\Storage\Common{
return 0;
}
} catch(\Exception $e) {
return 0;
return \OC\Files\FREE_SPACE_UNKNOWN;
}
}

View File

@ -29,6 +29,8 @@
namespace OC\Files;
const FREE_SPACE_UNKNOWN = -2;
class Filesystem {
public static $loaded = false;
/**

View File

@ -301,4 +301,13 @@ abstract class Common implements \OC\Files\Storage\Storage {
}
return implode('/', $output);
}
/**
* get the free space in the storage
* @param $path
* return int
*/
public function free_space($path){
return \OC\Files\FREE_SPACE_UNKNOWN;
}
}

View File

@ -762,9 +762,13 @@ class OC_Helper {
$maxUploadFilesize = min($upload_max_filesize, $post_max_size);
$freeSpace = \OC\Files\Filesystem::free_space($dir);
$freeSpace = max($freeSpace, 0);
if($freeSpace !== \OC\Files\FREE_SPACE_UNKNOWN){
$freeSpace = max($freeSpace, 0);
return min($maxUploadFilesize, $freeSpace);
return min($maxUploadFilesize, $freeSpace);
} else {
return $maxUploadFilesize;
}
}
/**