import { mkdir,writeFile } from 'fs/promises'; import path from 'path'; import crypto from 'crypto';
const allowed=new Set(['image/jpeg','image/png','image/webp','image/gif']);
export async function saveImage(file:File|null|undefined){if(!file||file.size===0)return null;if(!allowed.has(file.type))throw new Error('Nicht unterstütztes Bildformat');if(file.size>8*1024*1024)throw new Error('Bild größer als 8 MB');const ext=file.name.split('.').pop()?.toLowerCase()||'jpg';const name=`${Date.now()}-${crypto.randomBytes(5).toString('hex')}.${ext}`;const dir=path.join(process.cwd(),'public','uploads');await mkdir(dir,{recursive:true});await writeFile(path.join(dir,name),Buffer.from(await file.arrayBuffer()));return `/uploads/${name}`;}
