Skip to content
Home Tutorials Roadmaps Courses
Log in Join free
Tutorials Laravel File Uploads
Laravel Advanced FREE

File Uploads

Lesson 1 of 17 Advanced Interactive

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"

Syntax

LARAVEL
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]);
}
File Uploads
PHP
<?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);
}

Practice

1
Exercise

Upload an image with max 2MB validation.

Answer
$request->validate(["image" => "required|image|max:2048|mimes:jpg,png"]);
$path = $request->file("image")->store("images", "public");

Quick Quiz

1

store() vs storeAs()?

store() generates random name. storeAs() uses your specified name.

Interview Questions

Configure S3 in config/filesystems.php, then use Storage::disk("s3")->put().