Menu

Dynamic image insert in laravel

Dynamic image insert in laravel

Dynamic image insert in laravel

public/

 ├── vendors/

 │    └── 2026/01/24/

 │         └── my-vendor-photo-1706081234.webp

 ├── leads/

 ├── users/

 └── projects/

use this code in helper 

use Illuminate\Support\Str;
use Illuminate\Http\UploadedFile;

function saveProjectImages($files, string $baseFolder)
{
// 👇 single file को array बना दो
if ($files instanceof UploadedFile) {
$files = [$files];
}

$paths = [];

$year = date('Y');
$month = date('m');
$day = date('d');

$folderPath = public_path("$baseFolder/$year/$month/$day");

if (!file_exists($folderPath)) {
mkdir($folderPath, 0755, true);
}

foreach ($files as $file) {

$originalName = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
$slugName = Str::slug($originalName);
$extension = $file->getClientOriginalExtension();
$timestamp = time();

$baseFileName = $slugName . '-' . $timestamp;
$maxBaseLength = 100 - (strlen($extension) + 1);
$baseFileName = substr($baseFileName, 0, $maxBaseLength);

$finalFileName = $baseFileName . '.' . $extension;

$file->move($folderPath, $finalFileName);

$paths[] = "$baseFolder/$year/$month/$day/$finalFileName";
}

return $paths;
}



use this in controller
if ($request->hasFile('image')) {
$imagePaths = saveProjectImages(
is_array($request->file('image'))
? $request->file('image')
: [$request->file('image')],
'vendors'
);
}
Flow-chart laravel

Contact