Bird
Raised Fist0
Laravelframework~20 mins

S3 cloud storage integration in Laravel - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
S3 Storage Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output of this Laravel code snippet using S3 storage?
Consider this Laravel controller method that uploads a file to S3 and returns the file URL.

What will be the output when this method is called successfully?
Laravel
<?php
use Illuminate\Support\Facades\Storage;

public function uploadFile(Request $request) {
    $path = Storage::disk('s3')->put('uploads', $request->file('photo'));
    return Storage::disk('s3')->url($path);
}
AThe local file path on the server where the file was saved
BAn array containing file metadata like size and mime type
CA full URL string to the uploaded file on the S3 bucket
DA boolean true indicating the upload succeeded
Attempts:
2 left
💡 Hint
Think about what Storage::disk('s3')->url() returns.
📝 Syntax
intermediate
2:00remaining
Which option correctly configures the S3 disk in Laravel's filesystems.php?
You want to add an S3 disk configuration in config/filesystems.php. Which option is syntactically correct?
A
's3' =&gt; [
    'driver' =&gt; 's3',
    'key' =&gt; env('AWS_ACCESS_KEY_ID'),
    'secret' =&gt; env('AWS_SECRET_ACCESS_KEY'),
    'region' =&gt; env('AWS_DEFAULT_REGION'),
    'bucket' =&gt; env('AWS_BUCKET'),
],
B
's3' =&gt; [
    'driver' =&gt; 's3',
    'key' =&gt; 'AWS_ACCESS_KEY_ID',
    'secret' =&gt; 'AWS_SECRET_ACCESS_KEY',
    'region' =&gt; 'AWS_DEFAULT_REGION',
    'bucket' =&gt; 'AWS_BUCKET',
],
C
's3' =&gt; [
    'driver' =&gt; 's3',
    'key' =&gt; env('AWS_ACCESS_KEY'),
    'secret' =&gt; env('AWS_SECRET'),
    'region' =&gt; env('AWS_REGION'),
    'bucket' =&gt; env('AWS_BUCKET_NAME'),
],
D
's3' =&gt; [
    'driver' =&gt; 's3',
    'access_key' =&gt; env('AWS_ACCESS_KEY_ID'),
    'secret_key' =&gt; env('AWS_SECRET_ACCESS_KEY'),
    'region' =&gt; env('AWS_DEFAULT_REGION'),
    'bucket' =&gt; env('AWS_BUCKET'),
],
Attempts:
2 left
💡 Hint
Check the exact keys Laravel expects for S3 config.
🔧 Debug
advanced
2:00remaining
Why does this Laravel S3 upload code throw an error?
This code snippet throws an error when uploading a file to S3. What is the cause?
Laravel
<?php
use Illuminate\Support\Facades\Storage;

public function upload(Request $request) {
    $file = $request->file('image');
    $path = Storage::disk('s3')->putFile('images', $file);
    return $path;
}

// Error: Argument 1 passed to putFile() must be a string, null given
AputFile() requires a full file path string, not a file object
BThe AWS credentials are missing in the .env file
CThe 's3' disk is not configured in filesystems.php
DThe request does not contain a file named 'image', so $file is null
Attempts:
2 left
💡 Hint
Check what $request->file('image') returns if no file is uploaded.
❓ state_output
advanced
2:00remaining
What is the value of $exists after this Laravel S3 code runs?
Given this code snippet, what will be the value of $exists?
Laravel
<?php
use Illuminate\Support\Facades\Storage;

$filename = 'documents/report.pdf';
$exists = Storage::disk('s3')->exists($filename);
AAlways true because the file path is a string
Btrue if 'documents/report.pdf' exists in the S3 bucket, false otherwise
CThrows an exception if the file does not exist
Dnull because exists() does not return a value
Attempts:
2 left
💡 Hint
What does Storage::disk('s3')->exists() check?
🧠 Conceptual
expert
3:00remaining
Which option best explains why Laravel uses Flysystem for S3 integration?
Laravel uses the Flysystem PHP package to integrate with S3. Why is this approach beneficial?
AFlysystem provides a consistent API for multiple storage systems, making it easy to switch between local and cloud storage
BFlysystem automatically encrypts all files uploaded to S3 without extra configuration
CFlysystem is required by AWS SDK to connect to S3 buckets
DFlysystem caches all S3 files locally to improve performance
Attempts:
2 left
💡 Hint
Think about abstraction and flexibility in storage APIs.

Practice

(1/5)
1. What is the main purpose of integrating S3 cloud storage in a Laravel application?
easy
A. To speed up database queries
B. To store files safely online and access them via Laravel
C. To replace Laravel's routing system
D. To manage user authentication

Solution

  1. Step 1: Understand S3 integration role

    S3 cloud storage is used to store files remotely and securely in the cloud.
  2. Step 2: Connect with Laravel usage

    Laravel uses Storage::disk('s3') to interact with these files, enabling safe online storage.
  3. Final Answer:

    To store files safely online and access them via Laravel -> Option B
  4. Quick Check:

    S3 integration = safe online file storage [OK]
Hint: Remember S3 is for file storage, not database or routing [OK]
Common Mistakes:
  • Confusing S3 with database optimization
  • Thinking S3 replaces routing or authentication
  • Assuming S3 is for local file storage only
2. Which of the following is the correct Laravel syntax to store a file named 'photo.jpg' on the S3 disk?
easy
A. Storage::put('s3', 'photo.jpg', $fileContent);
B. Storage::disk('photo.jpg')->put('s3', $fileContent);
C. Storage::s3()->store('photo.jpg', $fileContent);
D. Storage::disk('s3')->put('photo.jpg', $fileContent);

Solution

  1. Step 1: Identify correct method chaining

    Laravel uses Storage::disk('s3') to select the S3 disk, then put() to save files.
  2. Step 2: Match parameters order

    The put() method takes the filename first, then the file content.
  3. Final Answer:

    Storage::disk('s3')->put('photo.jpg', $fileContent); -> Option D
  4. Quick Check:

    Correct syntax = Storage::disk('s3')->put(filename, content) [OK]
Hint: Use disk('s3') before put() to target S3 storage [OK]
Common Mistakes:
  • Swapping parameters in put() method
  • Using Storage::put() without disk() for S3
  • Calling non-existent methods like s3()
3. Given this Laravel code snippet:
Storage::disk('s3')->put('docs/report.txt', 'Annual Report');
$exists = Storage::disk('s3')->exists('docs/report.txt');
return $exists ? 'File found' : 'File missing';

What will be the output?
medium
A. File found
B. Syntax error
C. File missing
D. Runtime exception

Solution

  1. Step 1: Store file on S3 disk

    The put() method saves 'docs/report.txt' with content 'Annual Report'.
  2. Step 2: Check file existence

    The exists() method checks if the file is present, which returns true after put().
  3. Final Answer:

    File found -> Option A
  4. Quick Check:

    File saved and exists = 'File found' [OK]
Hint: put() then exists() returns true if file saved successfully [OK]
Common Mistakes:
  • Assuming file doesn't exist immediately after put()
  • Confusing method names like exist() instead of exists()
  • Expecting syntax or runtime errors without cause
4. You wrote this code to delete a file from S3:
Storage::disk('s3')->delete('images/photo.png');

But the file is not deleted. What is the most likely cause?
medium
A. You must call Storage::delete() without disk() for S3
B. The delete() method requires a second parameter
C. AWS credentials or bucket name not set correctly in .env
D. Laravel does not support deleting files on S3

Solution

  1. Step 1: Check AWS configuration

    Deleting files on S3 requires correct AWS keys and bucket info in environment settings.
  2. Step 2: Verify method usage

    The delete() method needs only the filename; no second parameter is required.
  3. Final Answer:

    AWS credentials or bucket name not set correctly in .env -> Option C
  4. Quick Check:

    Missing AWS config = delete fails [OK]
Hint: Always verify AWS keys and bucket in .env before file ops [OK]
Common Mistakes:
  • Adding extra parameters to delete() method
  • Calling delete() without disk('s3') for S3 files
  • Believing Laravel can't delete S3 files
5. You want to upload multiple files to S3 and then list all files in the 'uploads/' folder. Which Laravel code snippet correctly does this?
hard
A. foreach ($files as $file) { Storage::disk('s3')->put('uploads/'.$file->getClientOriginalName(), file_get_contents($file)); } $list = Storage::disk('s3')->files('uploads');
B. Storage::disk('s3')->putFiles('uploads', $files); $list = Storage::disk('s3')->allFiles('uploads');
C. foreach ($files as $file) { Storage::put('s3/uploads/'.$file, $file); } $list = Storage::disk('s3')->list('uploads');
D. Storage::disk('uploads')->put($files); $list = Storage::disk('s3')->files();

Solution

  1. Step 1: Upload multiple files correctly

    Loop over each file, use Storage::disk('s3')->put() with correct path and file content.
  2. Step 2: List files in 'uploads/' folder

    Use Storage::disk('s3')->files('uploads') to get all files in that folder.
  3. Final Answer:

    foreach ($files as $file) { Storage::disk('s3')->put('uploads/'.$file->getClientOriginalName(), file_get_contents($file)); } $list = Storage::disk('s3')->files('uploads'); -> Option A
  4. Quick Check:

    Loop put + files() list = correct multi-file S3 upload [OK]
Hint: Use loop with put() and files() to upload and list files [OK]
Common Mistakes:
  • Using non-existent putFiles() method
  • Wrong disk name or method for listing files
  • Passing files array directly without looping
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard