कड़े शब्दों में, जवाब नहीं है । एक डेवलपर किसी भी प्रकार या एक्सटेंशन की फ़ाइलों को अपलोड करने से उपयोगकर्ता को रोक नहीं सकता है।
लेकिन फिर भी, ओएस की फ़ाइल चयन संवाद बॉक्स में एक फ़िल्टर प्रदान करने में मदद की स्वीकार विशेषता हो <input type = "file">
सकती है। उदाहरण के लिए,
<!-- (IE 10+, Edge (EdgeHTML), Edge (Chromium), Chrome, Firefox 42+) -->
<input type="file" accept=".xls,.xlsx" />
.xls या .xlsx के अलावा अन्य फ़ाइलों को फ़िल्टर करने का एक तरीका प्रदान करना चाहिए। यद्यपि तत्व के लिए एमडीएन पृष्ठ input
ने हमेशा कहा कि यह मेरे आश्चर्य का समर्थन करता है, यह संस्करण 42 तक फ़ायरफ़ॉक्स में मेरे लिए काम नहीं करता था। यह IE 10+, एज और क्रोम में काम करता है।
इसलिए, IE 10+, एज, क्रोम, और ओपेरा के साथ 42 वर्ष से अधिक पुराने फ़ायरफ़ॉक्स का समर्थन करने के लिए, मुझे लगता है कि कॉमा से अलग होने वाली सूची का उपयोग करना बेहतर है:
<!-- (IE 10+, Edge (EdgeHTML), Edge (Chromium), Chrome, Firefox) -->
<input type="file"
accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel" />
[ एज (EdgeHTML) व्यवहार: फ़ाइल प्रकार फ़िल्टर ड्रॉपडाउन यहाँ उल्लिखित फ़ाइल प्रकार दिखाता है, लेकिन ड्रॉपडाउन में डिफ़ॉल्ट नहीं है। डिफ़ॉल्ट फ़िल्टर है All files (*)
]
आप MIME- प्रकारों में तारांकन का भी उपयोग कर सकते हैं। उदाहरण के लिए:
<input type="file" accept="image/*" /> <!-- all image types -->
<input type="file" accept="audio/*" /> <!-- all audio types -->
<input type="file" accept="video/*" /> <!-- all video types -->
W3C, MIME- प्रकार और विशेषता में एक्सटेंशन दोनों को निर्दिष्ट करने के लिए लेखकों की सिफारिश करता accept
है। तो, सबसे अच्छा तरीका है:
<!-- Right approach: Use both file extensions and corresponding MIME-types. -->
<!-- (IE 10+, Edge (EdgeHTML), Edge (Chromium), Chrome, Firefox) -->
<input type="file"
accept=".xls,.xlsx, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel" />
उसी की JSFiddle: यहाँ ।
संदर्भ: माइम-प्रकारों की सूची
महत्वपूर्ण:accept
विशेषता का उपयोग करना केवल उन प्रकारों की फ़ाइलों में फ़िल्टरिंग का एक तरीका प्रदान करता है जो ब्याज के हैं। ब्राउज़र अभी भी उपयोगकर्ताओं को किसी भी प्रकार की फ़ाइलों को चुनने की अनुमति देता है। अतिरिक्त (क्लाइंट-साइड) चेकों से किया जाना चाहिए (जावास्क्रिप्ट का उपयोग करते हुए, एक तरीका होगा इस ), और निश्चित रूप से फ़ाइल प्रकारों सर्वर पर सत्यापित किया जाना चाहिए , दोनों फाइल एक्सटेंशन और उसके द्विआधारी हस्ताक्षर का उपयोग कर माइम प्रकार के संयोजन का उपयोग ( एएसपी .NET , PHP , रूबी , जावा )। आपफ़ाइल प्रकारों और उनकी जादुई संख्या के लिए इन तालिकाओं को संदर्भित करना चाह सकते हैं, अधिक मजबूत सर्वर-साइड सत्यापन करने के लिए।
यहाँ फ़ाइल-अपलोड और सुरक्षा पर तीन अच्छे पढ़े गए हैं।
EDIT: हो सकता है कि फ़ाइल प्रकार का सत्यापन बाइनरी सिग्नेचर का उपयोग करके क्लाइंट भी जावास्क्रिप्ट (एचटीएमएल 5 फाइल एपीआई) का उपयोग करके जावास्क्रिप्ट के बजाय (एक्सटेंशन को देख कर) कर सकता है, लेकिन फिर भी, फ़ाइल को सर्वर पर सत्यापित किया जाना चाहिए, क्योंकि एक दुर्भावनापूर्ण उपयोगकर्ता अभी भी एक कस्टम HTTP अनुरोध बनाकर फ़ाइलें अपलोड करने में सक्षम होंगे।