تحديد الملف

في لغة HTML ، يُعدّ عنصر اختيار الملف جزءًا من نموذج الويب ، حيث يُمكّن المستخدم من اختيار ملف محلي. عند إرسال النموذج (ربما مع بيانات أخرى)، يُرفع الملف إلى خادم الويب . عند وصول الملف، تُنفّذ عادةً عملية ما، مثل حفظ الملف على خادم الويب. مع ذلك، تُحدّد العملية المحددة التي تُنفّذ بواسطة البرنامج النصي المُثبّت على الخادم والذي يُرسل إليه النموذج.

مثال على الكود

إليك مثال برمجي لنموذج ويب يحتوي على عنصر تحكم لاختيار ملف. inputالعنصر الذي يُنشئ عنصر التحكم هذا هو العنصر type="file"الذي يُنشئ عنصر التحكم لاختيار الملف.

< form action = " form-handler.php" method = "post" enctype = "multipart/form-data" ><div> < input id = " myfile " name = " myfile " type = " file" > < input value = "تحميل ►" type = " submit" > </div> </form>

عرض

تختلف طريقة عرض عنصر تحكم اختيار الملفات على الشاشة بين متصفحات الويب . عادةً، في نظام ويندوز، يعرض المتصفح عنصر تحكم اختيار الملفات كحقل نصي مع زر "استعراض". عند الضغط على زر "استعراض"، يُفتح مربع حوار لاختيار الملفات ، حيث يُمكن اختيار الملف المطلوب. بعد الاختيار، يظهر اسم الملف المُختار في الحقل النصي. بدلاً من ذلك، يُمكن إدخال اسم الملف مباشرةً في الحقل النصي.

بعض المتصفحات، ولا سيما فايرفوكس ، [ 1 ] لم تعد تسمح بكتابة اسم الملف مباشرةً. هذا إجراء أمني، إذ من الممكن خداع المستخدم لتحميل معلومات سرية. [ 2 ]

الوظائف

طُرحت آلية تحميل الملفات عبر النماذج لأول مرة في RFC 1867 (المنشور في نوفمبر 1995)، كإضافة إلى HTML 2.0 (RFC 1866) بعد نشره. ثم أُدمجت هذه الآلية في HTML 3.2، الذي يُشير صراحةً إلى RFC 1867 لمزيد من المعلومات حول تحميل الملفات عبر النماذج.

لا يصف معيار HTML 4.01، في حد ذاته، كيفية عمل عنصر التحكم في تحديد الملف، ولكنه يدرج RFC 2388 وRFC 1867 كمراجع. [ 3 ]

تحديد ملفات متعددة

يهدف RFC 1867 إلى أن يسمح عنصر تحكم تحديد الملفات الواحد بتحديد ملفات متعددة. ويبدو أن هذا الهدف ينعكس في HTML 4.01، الذي ينص، بالنسبة لنوع عنصر تحكم تحديد الملفات، على [ 4 ]

يُمكّن هذا النوع من عناصر التحكم المستخدم من تحديد الملفات بحيث يمكن إرسال محتوياتها مع نموذج. ويُستخدم عنصر الإدخال (INPUT) لإنشاء عنصر تحكم لاختيار الملفات.

وقد لوحظ [ 5 ] أن صيغة الجمع "files" في الاقتباس أعلاه تشير إلى أنه في HTML 4.01، كان من المفترض أن يقوم عنصر التحكم في تحديد ملف واحد بالتعامل مع تحديد ملفات متعددة وليس ملفًا واحدًا فقط.

يتم توضيح هذه الحالة في HTML5 بإضافة خاصية "multiple" عندما يجب أن يقبل حقل إدخال الملفات عدة ملفات. وتحدد المسودة الحالية السلوك الجديد على النحو التالي:

ما لم يتم تحديد خاصية التعدد، يجب ألا يكون هناك أكثر من ملف واحد في قائمة الملفات المحددة. [ 6 ]

سمة القبول

كما قدمت RFC 1867 acceptالسمة الخاصة بالعنصر input. وهذا من شأنه أن يُمكّن من تصفية أنواع الملفات بناءً على نوع MIME لعنصر التحكم في تحديد الملفات.

بالإضافة إلى ذلك، يُقترح أن تحتوي علامة الإدخال (INPUT) على سمة قبول (ACCEPT)، وهي عبارة عن قائمة بأنواع الوسائط المفصولة بفواصل.

إذا كانت سمة ACCEPT موجودة، فقد يقوم المتصفح بتقييد أنماط الملفات المطلوبة لتتوافق مع تلك التي تحتوي على امتدادات الملفات المناسبة للنظام الأساسي.

وبالتالي، قد يقيد برنامج المستخدم اختيار الملفات، كما هو الحال في المثال التالي، حيث يقتصر على صور GIF وPNG أو أي صور أخرى:

< input id = "myfile" name = "myfile" type = "file" accept = "image/gif,image/png" > < input id = "myfile" name = "myfile" type = "file" accept = "image/*" >

في نظام التشغيل ويندوز، قد يعني هذا أن برنامج المستخدم سيعرض الملفات فقط من الأنواع المحددة في مربع حوار استعراض الملفات.

قيود المتصفح

سرعان ما تبنت شركات المتصفحات دعمًا أساسيًا لعنصر التحكم في تحديد الملفات. فعلى سبيل المثال، كان كل من Internet Explorer 4 [ 7 ] و Netscape Navigator 2.0 و Opera 3.5 [ 8 ] يتعرفان على inputعنصر <file-select> كعنصر type="file"تحكم في تحديد الملفات.

ومع ذلك، لا تزال معظم المتصفحات الحديثة لا تُنفذ عنصر التحكم في تحديد الملفات كما هو مُخطط له، أو تفتقر إلى بعض الميزات. [ 5 ]

لا يمكن تحديد ملفات متعددة

يدعم الإصدار الحالي من متصفحات Chrome وFirefox وInternet Explorer وSafari وOpera تحميل ملفات متعددة باستخدام نموذج واحد مع عنصر تحكم واحد لاختيار الملفات. يشير أحد المصادر [ 5 ] إلى أن Opera يدعم تحديد ملفات متعددة من خلال عنصر تحكم واحد. كان هذا صحيحًا في إصدارات Opera بدءًا من الإصدار 3.5، الذي أُضيفت فيه ميزة تحميل الملفات. [ 8 ] مع ذلك، لم تعد هذه الميزة متاحة مع الإصدار التجريبي الأول من Opera 7. بدأ الإصدار 3.6 من Firefox بدعم تحديد ملفات متعددة، [ 9 ] مما يتيح للمطور وصولًا محدودًا إلى الملفات نفسها قبل تحميلها إلى الخادم، عبر واجهة برمجة تطبيقات ملفات HTML5 . [ 10 ] تتيح هذه الميزة أيضًا للمستخدمين سحب الملفات وإفلاتها من تطبيقات خارجية (مثل مستكشف Windows ) مباشرةً إلى تطبيق الويب. ومن الأمثلة البارزة على دعم هذه الميزة، إمكانية إضافة المرفقات عبر Gmail بهذه الطريقة.

يسمح HTML5 بتحميل ملفات متعددة باستخدام السمة "multiple" في عناصر الإدخال. [ 11 ]

بديل جافا سكريبت

أحد الحلول هو استخدام البرمجة النصية من جانب العميل، مثل جافا سكريبت، لإنشاء عنصر تحكم إضافي لاختيار الملفات لكل ملف يختاره المستخدم للتحميل. باستخدام CSS ، يمكن إخفاء عناصر التحكم الإضافية هذه. يُوضح مثال على هذه التقنية في إضافة "تحميل ملفات متعددة" لـ jQuery . بهذه الطريقة، تُحل مشكلة تحميل ملفات متعددة بتوفير عدد من عناصر التحكم لاختيار الملفات يساوي عدد الملفات التي يرغب المستخدم في تحميلها. مع ذلك، لا يحل هذا مشكلة اختيار ملفات متعددة للتحميل في متصفح إنترنت إكسبلورر.

دعم سمات القبول

خاصية القبول مدعومة حاليًا بواسطة Opera 11+ و Chrome 16+ و Safari 6+ و Firefox 9+ و Microsoft Internet Explorer 10+.

مراجع

  1. "388784 – (CVE-2007-3511) ثغرة أمنية في متصفح فايرفوكس تسمح بسرقة التركيز على مدخلات الملفات" . Bugzilla.mozilla.org . تم الاطلاع عليه بتاريخ 2013-09-02 .
  2. "ثغرة أمنية في تحميل الملفات عند الضغط على مفتاح OnKeyDown في متصفح موزيلا فايرفوكس" . Juniper.net. 15 نوفمبر 2010. تاريخ الاسترجاع: 2 سبتمبر 2013 .{{cite web}}: CS1 maint: deprecated archiveal service ( link )
  3. "مراجع مواصفات HTML 4" . W3.org . تم الاطلاع عليه بتاريخ 2013-09-02 .
  4. "النماذج في مستندات HTML" . W3.org . تم الاطلاع عليه بتاريخ 2013-09-02 .
  5. 1 2 3 "إدخال الملفات (أو "تحميلها") في نماذج HTML" . Cs.tut.fi. تم الاطلاع عليه بتاريخ 2013-09-02 .
  6. "مواصفات HTML 5.1" . W3C.
  7. "input type=file Object" . Msdn2.microsoft.com. 2013-07-22 . تم الاطلاع عليه بتاريخ 2013-09-02 .
  8. 1 2 "سجل المتصفح: أوبرا" . Blooberry.com . تم الاطلاع عليه بتاريخ 2013-09-02 .
  9. في ١٠ ديسمبر ٢٠٠٩، بقلم بول روجيه (٢٠٠٩-١٢-١٠). "إدخال ملفات متعددة في فايرفوكس ٣.٦ ✩ مدونة موزيلا هاكس - مدونة مطوري الويب" . Hacks.mozilla.org . تم الاطلاع عليه بتاريخ ٢٠١٣-٠٩-٠٢ .{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  10. "استخدام الملفات من تطبيقات الويب - MDC" . Developer.mozilla.org. 2013-08-23 . تم الاطلاع عليه بتاريخ 2013-09-02 .
  11. مواصفات HTML 5.1: 4.10.5.3 سمات عناصر الإدخال الشائعة