$tmp_name) { if ($_FILES['documents']['error'][$key] === UPLOAD_ERR_OK) { $original_name = basename($_FILES['documents']['name'][$key]); $file_size = $_FILES['documents']['size'][$key]; $file_type = mime_content_type($tmp_name); // Validate PDF $ext = strtolower(pathinfo($original_name, PATHINFO_EXTENSION)); if ($ext !== 'pdf' || $file_type !== 'application/pdf') { $errors[] = "$original_name ไม่ใช่ไฟล์ PDF"; continue; } // Max 10MB if ($file_size > 10 * 1024 * 1024) { $errors[] = "$original_name ขนาดเกิน 10MB"; continue; } // Generate unique filename $new_filename = uniqid('veh_') . '_' . time() . '.pdf'; $dest_path = $uploadDir . $new_filename; if (move_uploaded_file($tmp_name, $dest_path)) { // Save to DB try { $stmt = $pdo->prepare("INSERT INTO vehicle_documents (vehicle_id, original_name, file_name, file_path) VALUES (?, ?, ?, ?)"); $relative_path = 'uploads/vehicles/' . $new_filename; $stmt->execute([$vehicle_id, $original_name, $new_filename, $relative_path]); $successFiles[] = $original_name; } catch (PDOException $e) { // Remove file if DB insert fails unlink($dest_path); $errors[] = "DB Error for $original_name: " . $e->getMessage(); } } else { $errors[] = "ไม่สามารถบันทึกไฟล์ $original_name ได้"; } } } if (count($successFiles) > 0) { $msg = "อัปโหลดสำเร็จ " . count($successFiles) . " ไฟล์"; if (count($errors) > 0) { $msg .= " (ไม่สำเร็จ " . count($errors) . " ไฟล์)"; } jsonResponse(true, $msg); } else { jsonResponse(false, 'อัปโหลดไม่สำเร็จ: ' . implode(', ', $errors)); } ?>