public static function saveFile($fileName, $directory = '', $fileTypes = [])
{
if (is_object($fileName)) {
$file = $fileName;
$originalName = $file->getClientOriginalName();
} else {
$file = Request::file($fileName);
$originalName = false;
}
if (is_null($file)) {
return false;
}
if (File::size($file) > Config::get('quarx.maxFileUploadSize', '')) {
throw new Exception('This file is too large', 1);
}
if (substr($directory, 0, -1) != '/') {
$directory .= '/';
}
$extension = $file->getClientOriginalExtension();
$newFileName = md5(rand(1111, 9999) . time());
// In case we don't want that file type
if (!empty($fileTypes)) {
if (!in_array($extension, $fileTypes)) {
throw new Exception('Incorrect file type', 1);
}
}
Storage::disk(Config::get('quarx.storage-location', 'local'))->put($directory . $newFileName . '.' . $extension, File::get($file));
return ['original' => $originalName ?: $file->getFilename() . '.' . $extension, 'name' => $directory . $newFileName . '.' . $extension];
}