dragxd's picture
Initial commit: VoltEdge project
3353b25
import { NextRequest, NextResponse } from 'next/server';
import { uploadToTelegram } from '@/lib/telegram';
import { saveImage, generateId } from '@/lib/db';
export async function POST(req: NextRequest) {
try {
const formData = await req.formData();
const file = formData.get('file') as Blob;
const customId = formData.get('customId') as string;
if (!file) {
return NextResponse.json({ error: 'No file provided' }, { status: 400 });
}
// 1. Upload to Telegram
const telegramResult = await uploadToTelegram(file, 'upload.jpg');
// 2. Generate ID (use custom if provided)
const id = customId ? customId.toLowerCase().replace(/[^a-z0-9-]/g, '-') : generateId();
// Save to DB
await saveImage({
id,
telegram_file_id: telegramResult.file_id,
created_at: Date.now(),
metadata: {
size: file.size,
type: file.type
}
});
const baseUrl = process.env.NEXT_PUBLIC_BASE_URL ||
(req.headers.get('host') ? `http://${req.headers.get('host')}` : '');
return NextResponse.json({
id,
url: `${baseUrl}/i/${id}`
});
} catch (error: any) {
console.error('Upload error:', error);
return NextResponse.json({ error: error.message || 'Internal server error' }, { status: 500 });
}
}