download(Storage::disk($disk)->path($filename)); //works for PRIVATE or public?! case 's3': return redirect()->away(Storage::disk($disk)->temporaryUrl($filename, now()->addMinutes(5))); //works for private or public, I guess? default: return Storage::disk($disk)->download($filename); } } /** * This determines the file types that should be allowed inline and checks their fileinfo extension * to determine that they are safe to display inline. * * @author [ * @since v7.0.14 * @param $file_with_path * @return bool */ public static function allowSafeInline($file_with_path) { $allowed_inline = [ 'pdf', 'svg', 'jpg', 'gif', 'svg', 'avif', 'webp', 'png', ]; // The file exists and is allowed to be displayed inline if (Storage::exists($file_with_path) && (in_array(pathinfo($file_with_path, PATHINFO_EXTENSION), $allowed_inline))) { return true; } return false; } /** * Decide whether to show the file inline or download it. */ public static function showOrDownloadFile($file, $filename) { $headers = []; if (request('inline') == 'true') { $headers = [ 'Content-Disposition' => 'inline', ]; // This is NOT allowed as inline - force it to be displayed as text in the browser if (self::allowSafeInline($file) != true) { $headers = array_merge($headers, ['Content-Type' => 'text/plain']); } } // Everything else seems okay, but the file doesn't exist on the server. if (Storage::missing($file)) { throw new FileNotFoundException(); } return Storage::download($file, $filename, $headers); } }