سمة "قبول" إدخال الملف - هل هي مفيدة؟
-
05-07-2019 - |
سؤال
يعد تنفيذ تحميل ملف ضمن html أمرًا بسيطًا إلى حد ما، لكنني لاحظت للتو أن هناك سمة "قبول" يمكن إضافتها إلى <input type="file" ...>
بطاقة شعار.
هل هذه السمة مفيدة كوسيلة للحد من تحميل الملفات على الصور، وما إلى ذلك؟ما هي أفضل طريقة لاستخدامه؟
وبدلاً من ذلك، هل هناك طريقة للحد من أنواع الملفات، ويفضل أن يكون ذلك في مربع حوار الملف، لعلامة إدخال ملف html؟
المحلول
ال accept
السمة مفيدة بشكل لا يصدق.إنها تلميح للمتصفحات لإظهار الملفات المسموح بها حاليًا فقط input
.على الرغم من أنه يمكن للمستخدمين تجاوزه عادةً، إلا أنه يساعد في تضييق نطاق النتائج للمستخدمين افتراضيًا، حتى يتمكنوا من الحصول على ما يبحثون عنه بالضبط دون الحاجة إلى التدقيق في مئات أنواع الملفات المختلفة.
الاستخدام
ملحوظة: تمت كتابة هذه الأمثلة بناءً على المواصفات الحالية وقد لا تعمل فعليًا في جميع (أو أي) المتصفحات.قد تتغير المواصفات أيضًا في المستقبل، مما قد يؤدي إلى كسر هذه الأمثلة.
h1 { font-size: 1em; margin:1em 0; }
h1 ~ h1 { border-top: 1px solid #ccc; padding-top: 1em; }
<h1>Match all image files (image/*)</h1>
<p><label>image/* <input type="file" accept="image/*"></label></p>
<h1>Match all video files (video/*)</h1>
<p><label>video/* <input type="file" accept="video/*"></label></p>
<h1>Match all audio files (audio/*)</h1>
<p><label>audio/* <input type="file" accept="audio/*"></label></p>
<h1>Match all image files (image/*) and files with the extension ".someext"</h1>
<p><label>.someext,image/* <input type="file" accept=".someext,image/*"></label></p>
<h1>Match all image files (image/*) and video files (video/*)</h1>
<p><label>image/*,video/* <input type="file" accept="image/*,video/*"></label></p>
من مواصفات HTML (مصدر)
ال
accept
قد يتم تحديد السمة لتزويد وكلاء المستخدم ب تلميح لأنواع الملفات التي سيتم قبولها.إذا تم تحديدها، يجب أن تتكون السمة من أ مجموعة من الرموز المفصولة بفواصل, يجب أن يكون كل منها ASCII حساس لحالة الأحرفتطابق لأحد ما يلي:
السلسلة
audio/*
- يشير إلى قبول الملفات الصوتية.
السلسلة
video/*
- يشير إلى قبول ملفات الفيديو.
السلسلة
image/*
- يشير إلى قبول ملفات الصور.
أ نوع MIME صالح بدون معلمات
- يشير إلى قبول الملفات من النوع المحدد.
سلسلة حرفها الأول هو حرف U+002E FULL STOP (.)
- يشير إلى قبول الملفات ذات امتداد الملف المحدد.
نصائح أخرى
نعم، إنه مفيد للغاية في المتصفحات التي تدعمه، ولكن "التقييد" هو بمثابة وسيلة راحة للمستخدمين (حتى لا يثقلوا بملفات غير ذات صلة) وليس كوسيلة لمنعهم من تحميل الأشياء التي لا تريدها تحميل.
يتم دعمه في
- كروم 16+
- سفاري 6+
- فايرفوكس 9+
- آي إي 10+
- أوبرا 11+
هنا قائمة أنواع المحتوى يمكنك استخدامه معه، متبوعًا بامتدادات الملفات المقابلة (على الرغم من أنه يمكنك بالطبع استخدام أي امتداد للملف):
application/envoy evy
application/fractals fif
application/futuresplash spl
application/hta hta
application/internet-property-stream acx
application/mac-binhex40 hqx
application/msword doc
application/msword dot
application/octet-stream *
application/octet-stream bin
application/octet-stream class
application/octet-stream dms
application/octet-stream exe
application/octet-stream lha
application/octet-stream lzh
application/oda oda
application/olescript axs
application/pdf pdf
application/pics-rules prf
application/pkcs10 p10
application/pkix-crl crl
application/postscript ai
application/postscript eps
application/postscript ps
application/rtf rtf
application/set-payment-initiation setpay
application/set-registration-initiation setreg
application/vnd.ms-excel xla
application/vnd.ms-excel xlc
application/vnd.ms-excel xlm
application/vnd.ms-excel xls
application/vnd.ms-excel xlt
application/vnd.ms-excel xlw
application/vnd.ms-outlook msg
application/vnd.ms-pkicertstore sst
application/vnd.ms-pkiseccat cat
application/vnd.ms-pkistl stl
application/vnd.ms-powerpoint pot
application/vnd.ms-powerpoint pps
application/vnd.ms-powerpoint ppt
application/vnd.ms-project mpp
application/vnd.ms-works wcm
application/vnd.ms-works wdb
application/vnd.ms-works wks
application/vnd.ms-works wps
application/winhlp hlp
application/x-bcpio bcpio
application/x-cdf cdf
application/x-compress z
application/x-compressed tgz
application/x-cpio cpio
application/x-csh csh
application/x-director dcr
application/x-director dir
application/x-director dxr
application/x-dvi dvi
application/x-gtar gtar
application/x-gzip gz
application/x-hdf hdf
application/x-internet-signup ins
application/x-internet-signup isp
application/x-iphone iii
application/x-javascript js
application/x-latex latex
application/x-msaccess mdb
application/x-mscardfile crd
application/x-msclip clp
application/x-msdownload dll
application/x-msmediaview m13
application/x-msmediaview m14
application/x-msmediaview mvb
application/x-msmetafile wmf
application/x-msmoney mny
application/x-mspublisher pub
application/x-msschedule scd
application/x-msterminal trm
application/x-mswrite wri
application/x-netcdf cdf
application/x-netcdf nc
application/x-perfmon pma
application/x-perfmon pmc
application/x-perfmon pml
application/x-perfmon pmr
application/x-perfmon pmw
application/x-pkcs12 p12
application/x-pkcs12 pfx
application/x-pkcs7-certificates p7b
application/x-pkcs7-certificates spc
application/x-pkcs7-certreqresp p7r
application/x-pkcs7-mime p7c
application/x-pkcs7-mime p7m
application/x-pkcs7-signature p7s
application/x-sh sh
application/x-shar shar
application/x-shockwave-flash swf
application/x-stuffit sit
application/x-sv4cpio sv4cpio
application/x-sv4crc sv4crc
application/x-tar tar
application/x-tcl tcl
application/x-tex tex
application/x-texinfo texi
application/x-texinfo texinfo
application/x-troff roff
application/x-troff t
application/x-troff tr
application/x-troff-man man
application/x-troff-me me
application/x-troff-ms ms
application/x-ustar ustar
application/x-wais-source src
application/x-x509-ca-cert cer
application/x-x509-ca-cert crt
application/x-x509-ca-cert der
application/ynd.ms-pkipko pko
application/zip zip
audio/basic au
audio/basic snd
audio/mid mid
audio/mid rmi
audio/mpeg mp3
audio/x-aiff aif
audio/x-aiff aifc
audio/x-aiff aiff
audio/x-mpegurl m3u
audio/x-pn-realaudio ra
audio/x-pn-realaudio ram
audio/x-wav wav
image/bmp bmp
image/cis-cod cod
image/gif gif
image/ief ief
image/jpeg jpe
image/jpeg jpeg
image/jpeg jpg
image/pipeg jfif
image/svg+xml svg
image/tiff tif
image/tiff tiff
image/x-cmu-raster ras
image/x-cmx cmx
image/x-icon ico
image/x-portable-anymap pnm
image/x-portable-bitmap pbm
image/x-portable-graymap pgm
image/x-portable-pixmap ppm
image/x-rgb rgb
image/x-xbitmap xbm
image/x-xpixmap xpm
image/x-xwindowdump xwd
message/rfc822 mht
message/rfc822 mhtml
message/rfc822 nws
text/css css
text/h323 323
text/html htm
text/html html
text/html stm
text/iuls uls
text/plain bas
text/plain c
text/plain h
text/plain txt
text/richtext rtx
text/scriptlet sct
text/tab-separated-values tsv
text/webviewhtml htt
text/x-component htc
text/x-setext etx
text/x-vcard vcf
video/mpeg mp2
video/mpeg mpa
video/mpeg mpe
video/mpeg mpeg
video/mpeg mpg
video/mpeg mpv2
video/quicktime mov
video/quicktime qt
video/x-la-asf lsf
video/x-la-asf lsx
video/x-ms-asf asf
video/x-ms-asf asr
video/x-ms-asf asx
video/x-msvideo avi
video/x-sgi-movie movie
x-world/x-vrml flr
x-world/x-vrml vrml
x-world/x-vrml wrl
x-world/x-vrml wrz
x-world/x-vrml xaf
x-world/x-vrml xof
وتحمل السمة قدم في RFC 1867 ، تعتزم تمكين ملف من نوع تصفية تستند على نوع MIME لضبط ملف حدد. ولكن اعتبارا من عام 2008، معظم، إن لم يكن كلها، المتصفحات وعدم استخدام هذه السمة. استخدام البرامج النصية من جانب العميل، يمكنك جعل نوعا من التحقق من صحة تمديد مقرها، لتقديم بيانات من النوع الصحيح (التمديد).
وحلول أخرى لتحميل ملف متقدمة تتطلب أفلام فلاش مثل SWFUpload أو بريمجات جافا مثل <وأ href = "HTTP: //sourceforge.net/projects/jupload/ "يختلط =" noreferrer نوفولو "> JUpload .
في عام 2015 الطريقة الوحيدة لقد وجدت لجعله يعمل لكليهما كروم و ثعلب النار هو وضع جميع الإضافات الممكنة التي تريد دعمها، بما في ذلك المتغيرات:
accept=".jpeg, .jpg, .jpe, .jfif, .jif"
مشكلة مع فايرفوكس:باستخدام image/jpeg
سوف يظهر نوع mime FireFox فقط .jpg
ملفات غريبة جدا كما لو كانت شائعة .jpeg
لم يكن بخير...
مهما فعلت، تأكد من تجربة الملفات التي تحتوي على العديد من الامتدادات المختلفة.ربما يعتمد الأمر على نظام التشغيل ...
أفترض accept
غير حساس لحالة الأحرف، ولكن ربما لا يكون موجودًا في كل المتصفحات.
هنا هو مستندات MDN حول القبول:
تقبل إذا كانت قيمة سمة النوع هي ملف ، فستشير هذه السمة إلى أنواع الملفات التي يقبلها الخادم ، وإلا فإنها سيتم تجاهلها.يجب أن تكون القيمة قائمة مفصولة بفواصل فريدة محددات نوع المحتوى:
A file extension starting with the STOP character (U+002E). (e.g. .jpg, .png, .doc). A valid MIME type with no extensions. audio/* representing sound files. HTML5 video/* representing video files. HTML5 image/* representing image files. HTML5
وكانت مدعومة من قبل كروم. انها ليست من المفترض أن تستخدم من أجل التحقق، ولكن لنوع دلالة على أن OS. إذا كان لديك سمة accept="image/jpeg"
في ملف تحميل نظام التشغيل يمكن أن تظهر الملفات من نوع اقترح فقط.
ولقد كان بضع سنوات، والكروم على الأقل يجعل من استخدام هذه السمة. هذه السمة هي مفيدة جدا من وجهة نظر سهولة الاستخدام كما أنه سيتم تصفية الملفات غير الضرورية بالنسبة للمستخدم، مما يجعل تجربتهم أكثر سلاسة. ومع ذلك، يمكن للمستخدم أيضا تحديد "كل الملفات" من نوع (أو تجاوز خلاف مرشح)، وبالتالي يجب أن تحقق دائما الملف حيث يتم استخدامه في الواقع. إذا كنت تستخدم على الملقم، التحقق من صحة ذلك هناك قبل استخدامه. يمكن للمستخدم تجاوز دائما أي البرامج النصية من جانب العميل.
إذا يستخدم المستعرض هذه السمة، ما هي الا بمثابة مساعدة للمستخدم، لذلك فهو لن إيداع ملف متعددة ميغا بايت فقط لمعرفة انها رفضت من قبل الملقم ...
الشيء نفسه بالنسبة للبطاقة <input type="hidden" name="MAX_FILE_SIZE" value="100000">
: إذا كان المتصفح يستخدم ذلك، انها لن ترسل الملف ولكن خطأ مما أدى إلى UPLOAD_ERR_FORM_SIZE
(2) خطأ في PHP (غير متأكد كيف يتم التعامل معها في لغات أخرى)
ملاحظة هذه هي تساعد للمستخدم م>. بطبيعة الحال، فإن الملقم يجب دائما التحقق من نوع وحجم الملف على نهايته: فمن السهل أن العبث مع هذه القيم على جانب العميل
في عام 2008، لم يكن هذا مهمًا بسبب عدم وجود أنظمة تشغيل للهواتف المحمولة ولكنه أصبح الآن أمرًا مهمًا للغاية.
عند تعيين أنواع mime مقبولة، على سبيل المثال، يتم منح مستخدم Android مربع حوار نظام مع التطبيقات التي يمكن أن توفر له محتوى mime الذي يقبله إدخال الملف، وهو أمر رائع لأن التنقل عبر الملفات في مستكشف الملفات على الأجهزة المحمولة يكون بطيئًا ومرهقًا في كثير من الأحيان .
أحد الأشياء المهمة هو أن بعض متصفحات الجوال (استنادًا إلى إصدار Android من Chrome 36 وChrome Beta 37) لا تدعم تصفية التطبيقات عبر الإضافات (الإضافات) وأنواع mime المتعددة.