Files
Perplexica/src/app/api/uploads/route.ts
2025-12-13 22:20:26 +05:30

41 lines
1.2 KiB
TypeScript

import { NextResponse } from 'next/server';
import ModelRegistry from '@/lib/models/registry';
import UploadManager from '@/lib/uploads/manager';
export async function POST(req: Request) {
try {
const formData = await req.formData();
const files = formData.getAll('files') as File[];
const embeddingModel = formData.get('embedding_model_key') as string;
const embeddingModelProvider = formData.get('embedding_model_provider_id') as string;
if (!embeddingModel || !embeddingModelProvider) {
return NextResponse.json(
{ message: 'Missing embedding model or provider' },
{ status: 400 },
);
}
const registry = new ModelRegistry();
const model = await registry.loadEmbeddingModel(embeddingModelProvider, embeddingModel);
const uploadManager = new UploadManager({
embeddingModel: model,
})
const processedFiles = await uploadManager.processFiles(files);
return NextResponse.json({
files: processedFiles,
});
} catch (error) {
console.error('Error uploading file:', error);
return NextResponse.json(
{ message: 'An error has occurred.' },
{ status: 500 },
);
}
}