دع الزوّار يرفقون ملفًا
الهدف
دع أحدهم على بوابتك يرفق مستندًا — إيصالًا أو صورة أو نموذجًا موقّعًا — بالسجل الذي يُنشئه.
قبل أن تبدأ
- بوابة ضُبط فيها من يمكنه فتحها على من يسجّلون الدخول، لأن إرفاق ملف جزء من كتابة، والكتابة تحتاج إلى شخص تُنسب إليه. انظر اطلب من الزوّار تسجيل الدخول.
- جدول فيه عمود ملف أو صورة.
- صفّ الإنشاء موجود أصلًا في قائمة البوابة المسموح بها، من دع الزوّار يحفظون التغييرات. لا يُضاف شيء للملف — فهو يسافر داخل جسم الكتابة نفسها.
الخطوات
-
ارسم منتقي ملفات واربط قيمته بحقل من حالة الشاشة —
state.document. -
أرسله مع السجل. يسلّم المنتقي شاشتك الملف نفسه لا اسمه، فيذهب في نفس الكائن مع كل شيء آخر:
createRecord("par_claim", {par_name: getState("subject"),par_document: getState("document")}, "saved"); -
صِفه في مخطط طلب الـ API، ككائن من أربع خصائص:
"par_document": {"type": "object","additionalProperties": false,"required": ["fileName", "contentType", "contentBase64"],"properties": {"fileName": { "type": "string", "maxLength": 260 },"contentType": { "type": "string", "maxLength": 200 },"sizeBytes": { "type": "integer" },"contentBase64": { "type": "string", "maxLength": 5600000 }}} -
خزّن السجل أولًا ثم الملف، لأن الملف يخصّ سجلًا ولا يوجد ما يُرفق به قبل أن يوجد الصفّ:
var file = getInput('par_document');var id = createRecord('par_claim', {par_name: getInput('par_name'),par_raised_by_email: portalEmail(),par_document_name: isEmpty(file) ? '' : file.fileName});if (!isEmpty(file)) {putRecordFile('par_claim', id, 'par_document',file.fileName, file.contentType, file.contentBase64);} -
امسحه بعد الإرسال الناجح، ليفرغ المنتقي مع بقية النموذج:
setState("document", null);
ما هو الملف المُنتقى فعلًا
أربعة حقول، وهي نفس الأربعة التي يعيدها getRecordFile لأي سكربت — فللملف الذاهب والملف العائد شكل
واحد:
fileName | اسمه على جهاز الزائر نفسه |
contentType | نوع وسائطه كما أبلغ عنه متصفحه |
sizeBytes | حجمه — وهو ما يقوله التعليق |
contentBase64 | البايتات، كنص |
التعليق المربوط بالكائن كله يُقرأ اسمَ الملف، فـ text(state.document) يقول contract.pdf لا
شيئًا غير مقروء. ولعرض صورة مُنتقاة اربط مصدر img بـ fileUrl(state.document).