Handle file uploads via the Request object.
Methods
$file->store("path")� random name$file->storeAs("path", "name")� specific name
Validation
"file" => "required|file|max:2048|mimes:jpg,png"
Handle file uploads via the Request object.
$file->store("path") � random name$file->storeAs("path", "name") � specific name"file" => "required|file|max:2048|mimes:jpg,png"
public function store(Request $request) { $request->validate(["avatar" => "required|file|max:2048|mimes:jpg,png"]); $path = $request->file("avatar")->store("avatars", "public"); return response()->json(["path" => $path]); }
<?php // resources/views/upload.blade.php <form action="/upload" method="post" enctype="multipart/form-data"> @csrf <input type="file" name="document"> <button type="submit">Upload</button> </form> // Controller public function store(Request $request) { $request->validate([ "document" => "required|file|mimes:pdf,docx|max:10240", ]); $path = $request->file("document")->store("docs", "public"); // Add a custom filename $name = $request->file("document") ->storeAs("docs", "invoice-" . now()->timestamp . ".pdf", "public"); return back()->with("success", "Uploaded: " . $path); }
Upload an image with max 2MB validation.
$request->validate(["image" => "required|image|max:2048|mimes:jpg,png"]);
$path = $request->file("image")->store("images", "public");
store() vs storeAs()?
store() generates random name. storeAs() uses your specified name.
Configure S3 in config/filesystems.php, then use Storage::disk("s3")->put().