Deleting files helps you remove unwanted or old files from your storage to keep things clean and save space.
Deleting files in Laravel
use Illuminate\Support\Facades\Storage;
Storage::delete('path/to/file.jpg');image1.jpg inside the photos folder.Storage::delete('photos/image1.jpg');Storage::delete(['photos/image1.jpg', 'photos/image2.jpg']);
if (Storage::exists('docs/manual.pdf')) { Storage::delete('docs/manual.pdf'); }
This controller method deletes a file from the uploads folder based on the filename sent in the request. It first checks if the file exists to avoid errors, then deletes it and returns a success message. If the file is not found, it returns a 404 error message.
<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Storage; use Illuminate\Http\Request; class FileController extends Controller { public function deleteFile(Request $request) { $filePath = 'uploads/' . $request->input('filename'); if (Storage::exists($filePath)) { Storage::delete($filePath); return response()->json(['message' => 'File deleted successfully.']); } else { return response()->json(['message' => 'File not found.'], 404); } } }
Always check if a file exists before deleting to prevent errors.
Laravel's Storage facade works with different disks like local, s3, etc. Make sure you use the correct disk if not default.
Deleting a file is permanent, so be careful when deleting user files.
Use Storage::delete() to remove files in Laravel.
You can delete one or many files by passing a string or array.
Check if files exist before deleting to avoid errors.
Practice
Solution
Step 1: Identify the Laravel file deletion method
Laravel uses theStoragefacade to manage files, and the method to delete files isdelete().Step 2: Confirm the correct method name
Other methods likeremove(),destroy(), andunlink()do not exist in Laravel's Storage facade.Final Answer:
Storage::delete() -> Option AQuick Check:
File deletion method = Storage::delete() [OK]
- Confusing delete() with remove()
- Using unlink() which is a PHP function, not Laravel method
- Trying to use destroy() which is for models, not files
Solution
Step 1: Understand the method parameter for single file deletion
To delete a single file, pass the file path as a string toStorage::delete().Step 2: Check the syntax correctness
Storage::delete('example.txt'); correctly uses a string argument. Storage::delete(['example.txt']); uses an array which is valid but for multiple files. Options C and D use invalid method names.Final Answer:
Storage::delete('example.txt'); -> Option CQuick Check:
Single file delete uses string argument [OK]
- Passing an array when deleting a single file
- Using non-existent methods like remove() or deleteFile()
- Forgetting the semicolon at the end
use Illuminate\Support\Facades\Storage; $result = Storage::delete(['file1.txt', 'file2.txt']); var_dump($result);
Solution
Step 1: Understand Storage::delete() with array input
When passing an array of file paths,Storage::delete()attempts to delete all files and returns true only if all deletions succeed.Step 2: Analyze the return value
The method returns a boolean, not an array. It returns false if any file fails to delete.Final Answer:
true if all files deleted, false otherwise -> Option BQuick Check:
Storage::delete(array) returns boolean [OK]
- Expecting an array of booleans as return
- Thinking array input causes error
- Assuming it always returns false
use Illuminate\Support\Facades\Storage;
if (Storage::exists('oldfile.txt')) {
Storage::delete('oldfile.txt');
} else {
echo 'File does not exist';
}Solution
Step 1: Check if Storage facade is imported
The code importsStoragecorrectly withuse Illuminate\Support\Facades\Storage;.Step 2: Verify method usage
Storage::exists()checks if file exists, andStorage::delete()accepts a string for single file deletion. The conditional prevents errors if file is missing.Final Answer:
No error; code works correctly -> Option DQuick Check:
Check existence before delete is correct pattern [OK]
- Forgetting to import Storage facade
- Assuming delete() needs array always
- Using non-existent methods
Solution
Step 1: Understand safe deletion of multiple files
To avoid errors, check if each file exists before deleting it.Step 2: Analyze each option
foreach (['a.txt', 'b.txt', 'c.txt'] as $file) { Storage::delete($file); } deletes without checking existence, risking errors. Storage::delete(['a.txt', 'b.txt', 'c.txt']); deletes all at once but may fail if some files don't exist. foreach (['a.txt', 'b.txt', 'c.txt'] as $file) { if (Storage::exists($file)) { Storage::delete($file); } } checks existence before deleting each file, preventing errors. Storage::delete('a.txt', 'b.txt', 'c.txt'); uses invalid syntax.Final Answer:
foreach (['a.txt', 'b.txt', 'c.txt'] as $file) { if (Storage::exists($file)) { Storage::delete($file); } } -> Option AQuick Check:
Check existence before delete in loop for safety [OK]
- Deleting files without existence check
- Passing multiple strings instead of array
- Using invalid method signatures
Ready to prove it?
Pass the test and this pattern moves unknown
