Use cms.storage.uploads.disk instead of filesystem.default

Fixes #3332.
FileUpload widget uploads file to the disk specified by default in config/filesystem.php instead of storage.uploads.disk in config/cms.php, if we use System\Models\File following the instruction in here.
Although we can still create another class extending System\Models\File or October\Rain\Database\Attach\File and use it as the model for attachOne/Many relation, System\Models\File seems to be the one that responsible to look at storage.uploads.disk in config/cms.php, because the existing methods are using storage.uploads.*.
Credit to @pikanji
This commit is contained in:
pikanji 2018-01-02 08:04:47 +09:00 committed by Luke Towers
parent 1389f77390
commit 54ab6f080a

View File

@ -2,6 +2,8 @@
use Url; use Url;
use Config; use Config;
use File as FileHelper;
use Storage;
use October\Rain\Database\Attach\File as FileBase; use October\Rain\Database\Attach\File as FileBase;
/** /**
@ -56,4 +58,23 @@ class File extends FileBase
return $uploadsFolder . '/protected/'; return $uploadsFolder . '/protected/';
} }
} }
/**
* Returns true if storage.uploads.disk in config/cms.php is "local".
* @return bool
*/
protected function isLocalStorage()
{
return Config::get('cms.storage.uploads.disk') == 'local';
}
/**
* Copy the local file to Storage
* @return bool True on success, false on failure.
*/
protected function copyLocalToStorage($localPath, $storagePath)
{
$disk = Storage::disk(Config::get('cms.storage.uploads.disk'));
return $disk->put($storagePath, FileHelper::get($localPath), ($this->isPublic()) ? 'public' : null);
}
} }