Untitled
unknown
plain_text
5 months ago
3.0 kB
3
Indexable
import express, { Request, Response } from 'express'; import { uploadToS3 } from '../../s3Service'; import multer from 'multer'; import fs from 'fs'; import Video from '../models/uploadedVideosModel'; // MongoDB modeli const router = express.Router(); const upload = multer({ dest: 'uploads/' }); // Geçici dosyalar için 'uploads/' klasörü // Test amaçlı bir GET route ekleniyor router.get('/test-upload', (req: Request, res: Response) => { res.status(200).send("Video upload route is working."); }); // POST route - Video yükleme ve MongoDB kaydı router.post('/upload', upload.single('video'), async (req: Request, res: Response) => { const { interviewId, candidateId } = req.body; // Interview ve candidate bilgileri try { // `req.body` içeriğini kontrol et console.log("Request Body:", req.body); // interviewId ve candidateId kontrolü if (!interviewId || !candidateId) { return res.status(400).json({ error: 'interviewId ve candidateId alanları zorunludur.', }); } if (!req.file) { return res.status(400).json({ error: 'Video dosyası bulunamadı.' }); } // Yalnızca MP4 ve WebM formatlarını kabul edin if (!['video/mp4', 'video/webm'].includes(req.file.mimetype)) { return res.status(400).json({ error: 'Sadece MP4 veya WebM formatındaki videolar kabul edilmektedir.', }); } // Dosya boyutu sınırı kontrolü (50MB) if (req.file.size > 50 * 1024 * 1024) { return res.status(400).json({ error: 'Video boyutu çok büyük (50MB üzeri).', }); } // S3'e yükleme işlemi const videoUrl = await uploadToS3(req.file); // Geçici dosyayı sil if (req.file) { fs.unlink(req.file!.path, (err) => { if (err && err.code !== 'ENOENT') { console.error('Temporary file deletion error:', err); } else if (!err) { console.log('Temporary file deleted:', req.file!.path); } }); } else { console.error('No file to delete or file upload failed.'); } // MongoDB'ye kaydet const videoData = new Video({ interviewId: interviewId.trim(), candidateId: candidateId.trim(), videoUrl, uploadedAt: new Date(), }); await videoData.save(); // MongoDB kaydı res.status(200).json({ message: 'Video başarıyla yüklendi ve kaydedildi.', videoUrl, }); } catch (error) { console.error('Error uploading video:', error); res.status(500).json({ error: 'Video yüklenemedi. Lütfen tekrar deneyin.', }); } }); export default router;
Editor is loading...
Leave a Comment