To upload a file using Laravel, you can follow these steps:
Create a new form in your Laravel view with an input field for the file:
<form method="POST" action="{{ route('file.upload') }}" enctype="multipart/form-data">
@csrf
<input type="file" name="file">
<button type="submit">Upload</button>
</form>
Define a new route in your routes/web.php
file that points to a controller method that will handle the file upload:
Route::post('/file/upload', [App\Http\Controllers\FileController::class, 'upload'])->name('file.upload');
Create a new controller method in FileController
that will handle the file upload:
public function upload(Request $request)
{
// Validate the uploaded file
$request->validate([
'file' => 'required|file|max:1024', // limit file size to 1 MB
]);
// Store the uploaded file in the storage/app/public directory
$path = $request->file('file')->store('public');
// Generate a URL for the uploaded file
$url = Storage::url($path);
// Redirect back with a success message
return back()->with('success', 'File uploaded successfully: ' . $url);
}
In the upload()
method, we first validate that the uploaded file meets our requirements (in this case, it must be a file and not exceed 1 MB in size). We then use the store()
method on the uploaded file to store it in the storage/app/public
directory. This directory is publicly accessible, so we can generate a URL for the file using the url()
method on the Storage
facade. Finally, we redirect back to the form with a success message that includes the URL of the uploaded file.
You can now test the file upload functionality by navigating to the form and selecting a file to upload. If the file meets the validation requirements, it will be uploaded and a success message will be displayed. You can then access the uploaded file at the generated URL.