दिलचस्प पोस्ट
एक आवेदन को छोड़कर पर frowned है? सी # हैश_हैमक के बराबर PHP में ग्रन्ट, एनपीएम और बोवर के बीच का अंतर (पैकेज.जेसन बनाम बोवर.जेसन) क्यों int * int ** में क्षय नहीं है लेकिन int ? सभी मेजबानों से MySQL रूट एक्सेस Android एमुलेटर पर रूट एक्सेस कैसे प्राप्त करें? MySQL अपडेट क्वेरी में वृद्धि मूल्य क्यों System.gc () कॉल करने के लिए खराब अभ्यास है? कैसे एक इनलाइन ब्लॉक तत्व लाइन के शेष को भरने के लिए? क्या jQuery के लिए एक हैंडल है। Delegate ('hover')? पोस्टग्रेज़ कैश / बफ़र्स देखें और साफ़ करें? आईओएस आवेदन में शीर्ष-सर्वाधिक दृश्य / विंडो के संदर्भ को प्राप्त करना सी # में एक बाइट सरणी में एक बड़ी फ़ाइल को पढ़ने का सबसे अच्छा तरीका है? एनएटी में सृजना की तारीख से फाइल प्राप्त करना request.getQueryString () कुछ एन्कोडिंग की आवश्यकता है

मैं फ़ाइल अपलोड करने के फ़ाइल प्रकार को कैसे मान्य करूं?

मैं एक asp.net अनुप्रयोग में एक फ़ाइल अपलोड करने के लिए <input type="file" id="fileUpload" runat="server"> का उपयोग कर रहा हूँ। मैं अपलोड की फ़ाइल प्रकार को सीमित करना चाहूंगा (उदाहरण: सीमा .xls या .xlsx फ़ाइल एक्सटेंशन)।

जावास्क्रिप्ट या सर्वर-साइड सत्यापन दोनों ठीक हैं (जब तक फाइल अपलोड किए जाने से पहले सर्वर साइड सत्यापन हो जाएगा – कुछ बहुत बड़ी फ़ाइलें अपलोड की जा सकती हैं, इसलिए वास्तविक फाइल अपलोड होने से पहले किसी भी मान्यता की आवश्यकता होती है) ।

Solutions Collecting From Web of "मैं फ़ाइल अपलोड करने के फ़ाइल प्रकार को कैसे मान्य करूं?"

ऐसा लगता है कि आपके पास सीमित विकल्प हैं क्योंकि आप चाहते हैं कि अपलोड अपलोड करने से पहले हो। मुझे लगता है कि आप जिस सर्वश्रेष्ठ को प्राप्त करने जा रहे हैं वह फ़ाइल के एक्सटेंशन को मान्य करने के लिए जावास्क्रिप्ट का उपयोग करना है। आप वैध एक्सटेंशन के एक हैश का निर्माण कर सकते हैं और फिर यह देखने के लिए देखें कि क्या फ़ाइल अपलोड का विस्तार हैश में मौजूद है।

HTML:

 <input type="file" name="FILENAME" size="20" onchange="check_extension(this.value,"upload");"/> <input type="submit" id="upload" name="upload" value="Attach" disabled="disabled" /> 

जावास्क्रिप्ट:

 var hash = { 'xls' : 1, 'xlsx' : 1, }; function check_extension(filename,submitId) { var re = /\..+$/; var ext = filename.match(re); var submitEl = document.getElementById(submitId); if (hash[ext]) { submitEl.disabled = false; return true; } else { alert("Invalid filename, please select another file"); submitEl.disabled = true; return false; } } 

यह विनियमन अभिव्यक्ति सत्यापनकर्ता का उपयोग करके बहुत आसान है

 <asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ErrorMessage="Only zip file is allowed!" ValidationExpression ="^.+(.zip|.ZIP)$" ControlToValidate="FileUpload1" > </asp:RegularExpressionValidator> 

अपलोड करने के लिए अनुमति के लिए फ़ाइल प्रकार के ग्राहक-साइड सत्यापन

जावास्क्रिप्ट से, आप फ़ाइल नाम को ऑनसबमिट हैंडलर में प्राप्त करने में सक्षम होना चाहिए। तो आपके मामले में, आपको ऐसा कुछ करना चाहिए:

 <form onsubmit="if (document.getElementById('fileUpload').value.match(/xls$/) || document.getElementById('fileUpload').value.match(/xlsx$/)) { alert ('Bad file type') ; return false; } else { return true; }">...</form> 

मैं क्रिस से सहमत हूं, जांच कर रहा हूं कि एक्सटेंशन उस फ़ाइल के प्रकार की वैधता नहीं है जिस पर आप इसे देखते हैं। टेलरिक का राइडयूप्लोड संभवत: आपका सबसे अच्छा विकल्प है, यह फ़ाइल अपलोड की एक ContentType संपत्ति प्रदान करता है, जिसे आप ज्ञात माइम प्रकारों की तुलना कर सकते हैं। आपको निम्न की जांच करनी चाहिए:

आवेदन / vnd.ms-एक्सेल,

आवेदन / एक्सेल,

आवेदन / x-Msexcel

और नए 2 के 7 प्रारूप के लिए:

आवेदन / vnd.openxmlformatsofficedocument.spreadsheetml.sheet

टेलरिक एक व्यक्तिगत घटक के रूप में रेडयूप्लोड को बेचने के लिए प्रयोग किया जाता था, लेकिन अब इसे नियंत्रण सूट में लिपटा जाता है, जो इसे थोड़ा अधिक महंगा बनाता है, लेकिन यह सही प्रकार की जांच करने का सबसे आसान तरीका है

आप अपलोड नियंत्रण पर एक नियमित अभिव्यक्ति सत्यापनकर्ता का उपयोग कर सकते हैं:

  <asp:RegularExpressionValidator id="FileUpLoadValidator" runat="server" ErrorMessage="Upload Excel files only." ValidationExpression="^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.xls|.XLS|.xlsx|.XLSX)$" ControlToValidate="fileUpload"> </asp:RegularExpressionValidator> 

इनपुट टैग की स्वीकार्य विशेषता भी है:

 <input type="file" accept="application/msexcel" id="fileUpload" runat="server"> 

लेकिन जब मैंने इसे करने की कोशिश की तो मुझे ज्यादा सफलता नहीं मिली (एफएफ 3 और आईई 7 के साथ)

जैसा कि कुछ लोगों ने उल्लेख किया है, जावास्क्रिप्ट जाने का तरीका है ध्यान रखें कि "सत्यापन" यहां केवल फ़ाइल एक्सटेंशन के द्वारा है, यह मान्य नहीं करेगा कि फ़ाइल एक असली एक्सेल स्प्रैडशीट है!

Kd7 के जवाब के आधार पर सुझाव है कि आप फ़ाइलों की सामग्री प्रकार की जांच करते हैं, यहां एक आवरण विधि है:

 private bool FileIsValid(FileUpload fileUpload) { if (!fileUpload.HasFile) { return false; } if (fileUpload.PostedFile.ContentType == "application/vnd.ms-excel" || fileUpload.PostedFile.ContentType == "application/excel" || fileUpload.PostedFile.ContentType == "application/x-msexcel" || fileUpload.PostedFile.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" //this is xlsx format ) return true; return false; } 

अगर फाइल को अपलोड करना है तो सच वापस आ रहा है .xls या .xlsx

ठीक है – आप इसे पोस्ट-बैक में सर्वर-साइड करने में समर्थ नहीं होंगे क्योंकि पोस्ट-बैक के दौरान फ़ाइल अपलोड की जाएगी (अपलोड की गई)।

मुझे लगता है कि आप जावास्क्रिप्ट का उपयोग कर क्लाइंट पर ऐसा कर सकते हैं। निजी तौर पर, मैं टेलीयरिक द्वारा राइटयूप्लोड नामक एक तीसरे पक्ष घटक का उपयोग करता हूं इसमें एक अच्छा क्लाइंट-साइड और सर्वर-साइड एपीआई है, और यह बड़े फाइल अपलोड के लिए प्रगति बार प्रदान करता है।

मुझे यकीन है कि ओपन सोर्स समाधान भी उपलब्ध हैं I

मुझे लगता है कि ऐसा करने के लिए अलग-अलग तरीके हैं। चूंकि आईएसपी से परिचित नहीं आईमैं केवल एक विशिष्ट फ़ाइलप्रकार के लिए आपको कुछ संकेत दे सकता हूं:

1) सुरक्षित तरीके: आपको उस फ़ाइल प्रकार के शीर्षक के बारे में अधिक जानकारी प्राप्त करें, जिसे आप पास करना चाहते हैं अपलोड की गई फ़ाइल को पार्स करें और हेडर की तुलना करें

2) त्वरित तरीका: फ़ाइल के नाम को दो टुकड़ों में विभाजित करें – फ़ाइल का नाम और फ़ाइल का अंत। फ़ाइल को समाप्त करने की जांच करें और उस फ़ाइल की तरह इसकी तुलना करें जिसे आप अपलोड करना चाहते हैं

आशा करता हूँ की ये काम करेगा 🙂

मानक एस्पनेट से बचें और ब्रेटले विकास से NeadUpload घटक का उपयोग करें: http://www.brettle.com/neatupload

तेज़, आसान उपयोग करने के लिए, कॉन्फ़िग फ़ाइलों में maxRequestLength पैरामीटर के बारे में चिंता करना और एकीकृत करने में बहुत आसान है।

यह सुनिश्चित करने के लिए कि आप किसी भी फाइल को दुर्भावनापूर्ण फ़ाइल अपलोड नहीं कर सकते हैं, जैसे .aspx, .asp आदि।

वैकल्पिक विकल्प के रूप में, क्या आप HTML फ़ाइल इनपुट के "स्वीकार" विशेषता का उपयोग कर सकते हैं जो परिभाषित करता है कि किस प्रकार MIME प्रकार स्वीकार्य हैं

परिभाषा यहाँ

आप यह कोशिश कर सकते हैं

 <script> $(document).ready(function () { $('input[type=file]').change(function () { var val = $(this).val().toLowerCase(); var regex = new RegExp("(.*?)\.(docx|doc|pdf|xml|bmp|ppt|xls)$"); if(!(regex.test(val))) { $(this).val(''); alert('Please select correct file format'); } }); }); </script> 

आपका एकमात्र विकल्प क्लाइंट-साइड सत्यापन माना जाता है, क्योंकि सर्वर साइड का मतलब है कि फ़ाइल पहले ही अपलोड हो चुकी थी। इसके अलावा MIME प्रकार आमतौर पर फ़ाइल एक्सटेंशन द्वारा निर्धारित होता है।

जावास्क्रिप्ट फ़्रेमवर्क का उपयोग करें, जैसे कि jQuery के फार्म का ऑनसबमिट इवेंट को ओवरलोड करना। फिर एक्सटेंशन की जांच करें। इससे अधिकांश प्रयासों को सीमित किया जाएगा हालांकि यदि कोई व्यक्ति एक्सल एस एक्सटेंशन के लिए कोई चित्र बदलता है तो आपको एक समस्या होगी।

मुझे नहीं पता कि यह आपके लिए एक विकल्प है, लेकिन अपलोड करने के लिए सीरियललाइट या फ्लैश जैसी कुछ चीजों का इस्तेमाल करते समय आपके पास अधिक क्लाइंट साइड नियंत्रण होते हैं आप अपनी अपलोड प्रक्रिया के लिए इन प्रौद्योगिकियों में से एक का उपयोग करने पर विचार कर सकते हैं।

एक अन्य प्रतिवादी नोट के रूप में, फ़ाइल प्रकार को धोखा दिया जा सकता है (जैसे, .exe का नाम बदलकर .पीडीएफ), जो माइम प्रकार की जांच कर रहा है (यानी, .exe "एप्लिकेशन / पीडीएफ" का एक एमआईएम दिखाएगा यदि इसका नाम बदलकर रखा गया है पीडीएफ)। मुझे विश्वास है कि सच फ़ाइल प्रकार की जांच केवल सर्वर साइड हो सकती है; System.IO.BinaryReader का उपयोग करके इसे जांचने का एक आसान तरीका यहां वर्णित है:

http://forums.asp.net/post/2680667.aspx

और वीबी संस्करण यहां है:

http://forums.asp.net/post/2681036.aspx

ध्यान दें कि आपको आपके द्वारा जांच की जा रही फ़ाइल प्रकार के लिए द्विआधारी 'कोड' जानने की आवश्यकता होगी, लेकिन आप इस समाधान को कार्यान्वित करके और कोड को डीबग करने से प्राप्त कर सकते हैं।