Skip to content

Instantly share code, notes, and snippets.

@syofyanzuhad
Last active September 13, 2023 20:18
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save syofyanzuhad/5b405fefdbb7ae3013abc5ad4eb347fb to your computer and use it in GitHub Desktop.
Save syofyanzuhad/5b405fefdbb7ae3013abc5ad4eb347fb to your computer and use it in GitHub Desktop.
Laravel Trait for uploading Images / Photos, Files and Deleting Files
<?php
namespace App\Traits;
use Illuminate\Support\Facades\Storage;
trait FileUploader
{
public function uploadFile($request, $data, $name, $inputName = 'files')
{
$requestFile = $request->file($inputName);
try {
$dir = 'public/files/'.$name;
$fixName = $data->id.'-'.$name.'.'.$requestFile->extension();
if ($requestFile) {
Storage::putFileAs($dir, $requestFile, $fixName);
$request->file = 'files/'.$name.'/'.$fixName;
$data->update([
$inputName => $request->file,
]);
}
return true;
} catch (\Throwable $th) {
report($th);
return $th->getMessage();
}
}
// delete file
public function deleteFile($fileName = 'files')
{
try {
if ($fileName) {
Storage::delete('public/files/'.$fileName);
}
return true;
} catch (\Throwable $th) {
report($th);
return $th->getMessage();
}
}
/**
* For Upload Images.
* @param mixed $request
* @param mixed $data
* @param mixed $name
* @param mixed|null $inputName
* @return bool|string
*/
public function uploadImage($request, $data, $name, $inputName = 'image')
{
$requestFile = $request->file($inputName);
try {
$dir = 'public/images/'.$name;
$fixName = $data->id.'-'.$name.'.'.$requestFile->extension();
if ($requestFile) {
Storage::putFileAs($dir, $requestFile, $fixName);
$request->image = $fixName;
$data->update([
$inputName => $request->image,
]);
}
return true;
} catch (\Throwable $th) {
report($th);
return $th->getMessage();
}
}
public function uploadPhoto($request, $data, $name)
{
try {
$dir = 'public/photos/'.$name;
$fixName = $data->id.'-'.$name.'.'.$request->file('photo')->extension();
if ($request->file('photo')) {
Storage::putFileAs($dir, $request->file('photo'), $fixName);
$request->photo = $fixName;
$data->update([
'photo' => $request->photo,
]);
}
} catch (\Throwable $th) {
report($th);
return $th->getMessage();
}
}
}
@jksaWork
Copy link

This iS Awasome Pro

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment