/home/devscfvi/app.devsquantum.com/upload_screenshot.php
<?php
// upload_screenshot.php
// Handles screenshot file uploads
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');
// Configuration
$upload_dir = 'uploads/screenshots/';
$max_file_size = 5 * 1024 * 1024; // 5MB
$allowed_types = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
// Create upload directory if it doesn't exist
if (!file_exists($upload_dir)) {
mkdir($upload_dir, 0755, true);
}
// Check if file was uploaded
if (!isset($_FILES['screenshot'])) {
echo json_encode(['success' => false, 'error' => 'No file uploaded']);
exit;
}
$file = $_FILES['screenshot'];
// Validate file
if ($file['error'] !== UPLOAD_ERR_OK) {
echo json_encode(['success' => false, 'error' => 'Upload error: ' . $file['error']]);
exit;
}
// Check file size
if ($file['size'] > $max_file_size) {
echo json_encode(['success' => false, 'error' => 'File too large. Max 5MB']);
exit;
}
// Check file type
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime_type = finfo_file($finfo, $file['tmp_name']);
finfo_close($finfo);
if (!in_array($mime_type, $allowed_types)) {
echo json_encode(['success' => false, 'error' => 'Invalid file type. Only images allowed']);
exit;
}
// Generate unique filename
$extension = pathinfo($file['name'], PATHINFO_EXTENSION);
$filename = uniqid('screenshot_', true) . '_' . time() . '.' . $extension;
$filepath = $upload_dir . $filename;
// Move uploaded file
if (move_uploaded_file($file['tmp_name'], $filepath)) {
// Return path with leading slash for correct URL
echo json_encode([
'success' => true,
'filepath' => '/' . $filepath, // Add leading slash
'url' => '/' . $filepath
]);
} else {
echo json_encode(['success' => false, 'error' => 'Failed to save file']);
}
?>