DEV Community

asepher
asepher

Posted on

Laravel 10 Upload Image To Storage Folder Part 2

<?php

namespace App\Http\Controllers;

use App\Helper\ImageManager;
use App\Models\Image;
use Illuminate\Http\Request;
class TutorialController extends Controller
{

use ImageManager;
public function index()
{
return view('welcome');
}
public function store(Request $request)
{
$request->validate([
'image' => 'required|image|mimes:jpeg,png,jpg|max:2048',
]);
$path = storage_path('images/');
!is_dir($path) &&
mkdir($path, 0777, true);
if($file = $request->file('image')) {
$fileData = $this->uploads($file,$path);
Image::create([
'name' => $fileData['fileName'],
'type' => $fileData['fileType'],
'path' => $fileData['filePath'],
'size' => $fileData['fileSize']
]);
}
return redirect()
->back()
->with('success', 'Image successfully upload.');
}
}

app/Helper/ImageManager.php

namespace App\Helper;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
trait ImageManager {
public function uploads($file, $path)
{
if($file) {
$fileName = time() . $file->getClientOriginalName();
Storage::disk('public')->put($path . $fileName, File::get($file));
$file_name = $file->getClientOriginalName();
$file_type = $file->getClientOriginalExtension();
$filePath = $path . $fileName;
return $file = [
'fileName' => $file_name,
'fileType' => $file_type,
'filePath' => $filePath,
'fileSize' => $this->fileSize($file)
];
}
}
public function fileSize($file, $precision = 2)
{

$size = $file->getSize();
if ( $size > 0 ) {
$size = (int) $size;
$base = log($size) / log(1024);
$suffixes = array(' bytes', ' KB', ' MB', ' GB', ' TB');
return round(pow(1024, $base - floor($base)), $precision) . $suffixes[floor($base)];
}
return $size;
}
}

https://www.laravelia.com/

Top comments (0)