first commit

This commit is contained in:
2026-01-17 14:17:42 +05:30
commit 0f194eb9e7
328 changed files with 73544 additions and 0 deletions

56
app/api/upload/route.ts Normal file
View File

@@ -0,0 +1,56 @@
import { NextRequest, NextResponse } from 'next/server'
import { writeFile, mkdir } from 'fs/promises'
import { join } from 'path'
import { existsSync } from 'fs'
export async function POST(request: NextRequest) {
try {
const data = await request.formData()
const files: File[] = data.getAll('files') as File[]
if (!files || files.length === 0) {
return NextResponse.json({ error: 'No files uploaded' }, { status: 400 })
}
const uploadedUrls: string[] = []
for (const file of files) {
if (!file.type.startsWith('image/')) {
return NextResponse.json({ error: 'Only image files are allowed' }, { status: 400 })
}
const bytes = await file.arrayBuffer()
const buffer = new Uint8Array(bytes)
// Create products directory if it doesn't exist
const productsDir = join(process.cwd(), 'public', 'products')
if (!existsSync(productsDir)) {
await mkdir(productsDir, { recursive: true })
}
// Generate unique filename
const timestamp = Date.now()
const filename = `${timestamp}-${file.name.replace(/[^a-zA-Z0-9.-]/g, '_')}`
const filepath = join(productsDir, filename)
// Write file to public/products directory
await writeFile(filepath, buffer)
// Add to uploaded URLs (relative path for use in app)
uploadedUrls.push(`/products/${filename}`)
}
return NextResponse.json({
success: true,
urls: uploadedUrls,
message: `${uploadedUrls.length} file(s) uploaded successfully`
})
} catch (error) {
console.error('Upload error:', error)
return NextResponse.json(
{ error: 'Failed to upload files' },
{ status: 500 }
)
}
}