publicfunctionfileUploadPost(Request$request){$request->validate(['file'=>'required|mimes:pdf,xlx,csv|max:2048',]);$fileName=time().'.'.$request->file->extension();$request->file->move(public_path('uploads'),$fileName);returnback()->with('success','You have successfully upload file.')->with('file',$fileName);}
//first run this command to generate symbolic link
php artisan storage:link
//then in controller function$fileTemp=$request->file('file');if($fileTemp->isValid()){$fileExtension=$fileTemp->getClientOriginalExtension();$fileName=Str::random(4).'.'.$fileExtension;$path=$fileTemp->storeAs('public/documents',$fileName);}//above code will save your file in 'storage/app/public/documents' location//and using symbolic link we can access this file here 'public/storage/documents'//Now Open or download file in blade template<a href="{{url(Storage::url($document['file']))}}">Open/Download</a>
<?phpnamespaceAppHttpControllers;useIlluminateHttpRequest;classFileUploadControllerextendsController{/**
* Display a listing of the resource.
*
* @returnIlluminateHttpResponse
*/publicfunctionfileUpload(){returnview('fileUpload');}/**
* Display a listing of the resource.
*
* @returnIlluminateHttpResponse
*/publicfunctionfileUploadPost(Request$request){$request->validate(['file'=>'required|mimes:pdf,xlx,csv|max:2048',]);$fileName=time().'.'.$request->file->extension();$request->file->move(public_path('uploads'),$fileName);returnback()->with('success','You have successfully upload file.')->with('file',$fileName);}}
//upload.blade.php
<!doctypehtml><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1, shrink-to-fit=no"><linkrel="stylesheet"href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"><title>Laravel File Upload</title><style>.container{max-width:500px;}dl, ol, ul{margin:0;padding:0;list-style: none;}</style></head><body><divclass="container mt-5"><formaction="{{route('fileUpload')}}"method="post"enctype="multipart/form-data"><h3class="text-center mb-5">Upload File in Laravel</h3>
@csrf
@if ($message = Session::get('success'))
<divclass="alert alert-success"><strong>{{ $message }}</strong></div>
@endif
@if (count($errors) > 0)
<divclass="alert alert-danger"><ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul></div>
@endif
<divclass="custom-file"><inputtype="file"name="file"class="custom-file-input"id="chooseFile"><labelclass="custom-file-label"for="chooseFile">Select file</label></div><buttontype="submit"name="submit"class="btn btn-primary btn-block mt-4">
Upload Files
</button></form></div></body></html>
//web.php
use IlluminateSupportFacadesRoute;
use AppHttpControllersUploadController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::get('/upload-file', [UploadController::class, 'createForm']);
Route::post('/upload-file', [UploadController::class, 'fileUpload'])->name('fileUpload');
//UploadController.php
<?phpnamespaceAppHttpControllers;useAppModelsUpload;useIlluminateSupportFacadesFile;useIlluminateHttpRequest;classUploadControllerextendsController{//publicfunctioncreateForm(){returnview('upload');}publicfunctionfileUpload(Request$req){// $req->validate([// 'file' => 'required|mimes:csv,txt,xlx,xls,pdf|max:2048'// ]);$fileModel=newUpload;if($req->file()){$fileName=time().'_'.$req->file->getClientOriginalName();$filePath=$req->file('file')->storeAs('uploads',$fileName,'public');$fileModel->name=time().'_'.$req->file->getClientOriginalName();$fileModel->file_path='/storage/'.$filePath;$fileModel->save();returnback()->with('success','File has been uploaded.')->with('file',$fileName);}}}//upload.php<?php
namespaceAppModels;useIlluminateDatabaseEloquentFactoriesHasFactory;useIlluminateDatabaseEloquentModel;classUploadextendsModel{// use HasFactory;protected$table='tbl_upload';}