--- name: laravel:filesystem-uploads description: Store and serve files via Storage; set visibility, generate URLs, and handle streaming safely --- # Filesystem Uploads and URLs Use the Storage facade consistently; abstract away the backend (local, S3, etc.). ## Commands ``` $path = Storage::disk('public')->putFile('avatars', $request->file('avatar')); // Temporary URLs (S3, etc.) $url = Storage::disk('s3')->temporaryUrl($path, now()->addMinutes(10)); // Streams return Storage::disk('backups')->download('db.sql.gz'); ``` ## Patterns - Keep user uploads under a dedicated disk with explicit `visibility` - Avoid assuming local paths; always go through Storage - For public assets, run `storage:link` and serve via web server / CDN - Validate mime/types and size limits at upload boundaries