رفع الملفات
يتيح للمستجيبين رفع ملفات من أجهزتهم. يدعم قيود نوع الملف وحدود الحجم القابلة للتكوين.

معرّف النوع: file_upload
الخصائص
| الخاصية | النوع | الوصف | الافتراضي |
|---|---|---|---|
choices | Choice[] | عند الاستخدام لرفع الملفات، يحدد حقل label لكل خيار نوع MIME أو امتداد ملف مسموح (مثل "application/pdf" أو "image/*"). إذا كانت فارغة، تُقبل جميع أنواع الملفات. | [] (جميع الأنواع) |
max | number | الحد الأقصى لحجم الملف بالميغابايت (MB). | بدون (ينطبق حد المنصة) |
تخزين الملفات
تُخزن الملفات المرفوعة في تخزين Vercel Blob. يتضمن كل سجل رفع:
| الحقل | الوصف |
|---|---|
blobUrl | رابط تخزين Vercel Blob للملف. |
originalName | اسم الملف الأصلي من المستخدم (مثل resume.pdf). |
uuidName | اسم مبني على UUID مخزن في blob (مثل a1b2c3d4.pdf). |
size | حجم الملف بالبايت. |
contentType | نوع MIME (مثل application/pdf أو image/png). |
تتبع التخزين
يُتتبع إجمالي استهلاك تخزين الملفات لكل مستخدم بالبايت (storageUsedBytes على نموذج User). تختلف حدود التخزين حسب مستوى الخطة.
التحقق
إذا كان required صحيحًا، يجب على المستجيب رفع ملف قبل المتابعة.
معاملات القفز المنطقي
equals, not_equals, is_answered, is_not_answered
تنسيق الإجابة
تُخزن الإجابة ككائن FileUploadValue:
{
"fileId": "abc123",
"originalName": "resume.pdf",
"size": 245760,
"contentType": "application/pdf",
"downloadUrl": "/api/files/resume.pdf?id=abc123"
}
تُنسب رفعات الملفات إلى معرّف النموذج واختياريًا معرّف المستخدم. رفعات المستجيبين (المجهولة) لها userId معيّن كـ null، بينما رفعات وسائط المُنشئ (صور الأسئلة) لها معرّف المستخدم.
الرسم
لوحة رسم حر حيث يمكن للمستجيبين رسم أعمال فنية أو مخططات أو تعليقات توضيحية.
معرّف النوع: drawing
الخصائص
| الخاصية | النوع | الوصف | الافتراضي |
|---|---|---|---|
canvasSize | string | حجم لوحة الرسم. الخيارات: small أو medium أو large. | medium |
أحجام اللوحة
| الحجم | الوصف |
|---|---|
small | لوحة مدمجة مناسبة للرسومات البسيطة أو الأيقونات. |
medium | لوحة قياسية للمخططات والرسوم التوضيحية. |
large | لوحة موسعة للرسومات المفصّلة. |
التفاعل
- تدعم لوحة الرسم الرسم الحر بالماوس أو اللمس.
- يمكن للمستجيبين الرسم والمسح والتراجع عن عملهم.
- يُصدّر الرسم النهائي كملف صورة.
التحقق
إذا كان required صحيحًا، يجب على المستجيب إنشاء رسم قبل المتابعة.
معاملات القفز المنطقي
equals, not_equals, is_answered, is_not_answered
تنسيق الإجابة
تُخزن الإجابة ككائن FileUploadValue (يُحفظ الرسم كملف صورة):
{
"fileId": "def456",
"originalName": "drawing.png",
"size": 102400,
"contentType": "image/png",
"downloadUrl": "/api/files/drawing.png?id=def456"
}
لا يعرض سؤال الرسم زر "موافق" منفصل. يرسل المستجيبون رسمهم باستخدام عناصر التنقل القياسية للنموذج.
تسجيل الفيديو/الصوت
التقاط ردود فيديو أو صوت مباشرة عبر متصفح المستجيب باستخدام كاميرا وميكروفون الجهاز.
معرّف النوع: recording
الخصائص
| الخاصية | النوع | الوصف | الافتراضي |
|---|---|---|---|
recordingMode | string | نوع التسجيل. الخيارات: video أو audio. | video |
maxDuration | number | أقصى مدة تسجيل بالثواني. | 120 (دقيقتان) |
أوضاع التسجيل
| الوضع | الوصف |
|---|---|
video | يسجل الفيديو والصوت باستخدام كاميرا وميكروفون الجهاز. |
audio | يسجل الصوت فقط باستخدام ميكروفون الجهاز. لا حاجة لكاميرا. |
التفاعل
- ينقر المستجيب على زر "بدء التسجيل".
- يطلب المتصفح أذونات الكاميرا/الميكروفون (إذا لم تُمنح بالفعل).
- يُعرض معاينة مباشرة أثناء التسجيل.
- ينقر المستجيب على "إيقاف التسجيل" للإنهاء.
- تُعرض معاينة للتسجيل.
- يمكن للمستجيب إعادة التسجيل أو المتابعة.
متطلبات المتصفح
- يتطلب متصفحًا حديثًا يدعم MediaRecorder API.
- يجب على المستجيب منح أذونات الكاميرا و/أو الميكروفون.
- يُطلب HTTPS لالتقاط الوسائط (جميع روابط NueForm تعمل بـ HTTPS افتراضيًا).
التحقق
إذا كان required صحيحًا، يجب على المستجيب إكمال تسجيل قبل المتابعة.
معاملات القفز المنطقي
equals, not_equals, is_answered, is_not_answered
تنسيق الإجابة
تُخزن الإجابة ككائن FileUploadValue:
{
"fileId": "ghi789",
"originalName": "recording.webm",
"size": 524288,
"contentType": "video/webm",
"downloadUrl": "/api/files/recording.webm?id=ghi789"
}
يمكن أن تنتج تسجيلات الفيديو ملفات كبيرة. فكّر في تعيين maxDuration معقول للحفاظ على أحجام ملفات يمكن إدارتها. تسجيل فيديو مدته دقيقتان بجودة قياسية ينتج عادة ملفًا بين 5-15 ميغابايت.
التوقيع
لوحة توقيع رقمية حيث يمكن للمستجيبين رسم توقيعهم باستخدام الماوس أو القلم أو الإصبع.

معرّف النوع: signature
الخصائص
لا يحتوي نوع سؤال التوقيع على خصائص إضافية بخلاف خصائص السؤال المشتركة.
التفاعل
- تُعرض لوحة توقيع بلوحة فارغة.
- يرسم المستجيب توقيعه باستخدام الماوس أو القلم أو اللمس.
- يتوفر زر "مسح" للبدء من جديد.
- يُلتقط التوقيع كمسار متجه أو صورة.
التحقق
إذا كان required صحيحًا، يجب على المستجيب رسم توقيع قبل المتابعة.
معاملات القفز المنطقي
equals, not_equals, is_answered, is_not_answered
تنسيق الإجابة
تُخزن الإجابة كـ سلسلة نصية (عادة رابط بيانات أو صورة مشفرة بـ base64 للتوقيع).
التوقيعات خفيفة الوزن مقارنة بالرسومات والتسجيلات. تُخزن عادة كمسارات SVG أو صور PNG صغيرة، مما ينتج ملفات أقل بكثير من 100 كيلوبايت.
مرفقات الوسائط على أسئلة الوسائط
مثل جميع أنواع الأسئلة الأخرى، تدعم أسئلة التقاط الوسائط مرفقات الوسائط (صور، فيديوهات، أيقونات، رموز QR). يتيح لك هذا عرض مثال أو تعليمات بجانب واجهة الالتقاط. مثلًا، قد تعرض صورة توقيع نموذجية كوسائط على سؤال توقيع، أو تعرض رمز QR على سؤال رفع ملفات يرتبط بصفحة رفع مرافقة على الهاتف المحمول.
راجع دليل إنشاء النماذج لتفاصيل خيارات الوسائط وإعدادات التخطيط.