2009-05-06 22 views
8

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

आदर्श रूप में, यह मान उपयोगकर्ता फ़ाइल चुनता है लेकिन इससे पहले कि "फाइल अपलोड करें" बटन क्लिक किया जाता है के तुरंत बाद प्रदर्शित किया जाता है।

मेरे पास एक वेबफॉर्म है। बटन इस तरह दिखता है:

<asp:Button ID="UploadButton" runat="server" onclick="UploadButton_Click" Text="Upload File"/>   

बटन नियंत्रण के लिए ऑनक्लिक घटना परिणाम पोस्टबैक में होती है और फ़ाइल अपलोड की जाती है।

मुझे पता है कि फ़ाइल का आकार पाने के लिए नहीं, बल्कि पहले फ़ाइल अपलोड करें बटन क्लिक किया जाता है और एक पोस्टबैक होता है।

वहाँ FileUpload वेब नियंत्रण है कि बटन के क्लिक किए बिना प्रपत्र (अर्थात पोस्टबैक) जमा कर सकता है के साथ जुड़े एक घटना है?

पूरा इरादा यह है कि मैं उपयोगकर्ता को यह महसूस करना चाहता हूं कि अपलोड कितना समय ले सकता है ... 2kb फ़ाइल के लिए 10 एमबी फ़ाइल के लिए एक अलग एक्सपेक्शन सेट करें)।

उत्तर

14

समस्या वापस पोस्ट किए बिना ग्राहक के पक्ष फ़ाइल के आकार पता लगाने के लिए कोई रास्ता नहीं है कि वहाँ है। आप अजाक्स का उपयोग कर सकते हैं, लेकिन इसका मतलब यह होगा कि फाइल को पहले भी अपलोड करना होगा।

यह केवल ActiveX किसी भी प्रकार के नियंत्रण का उपयोग करके किया जा सकता है। मैं Silverlight FileUploader जैसे कुछ का उपयोग करने की अनुशंसा करता हूं क्योंकि इसे वापस पोस्ट करने से पहले फ़ाइल का आकार मिलता है और यहां तक ​​कि एक अच्छी प्रगति संकेतक भी है।

अद्यतन: यदि आप उपयोगकर्ता क्लिक ब्राउज़ करने के बाद पोस्टबैक या अजाक्स अनुरोध को ट्रिगर करना चाहते हैं, तो क्लाइंट साइड इवेंट "बदले" है। यहां परिवर्तन का उपयोग करने का उदाहरण दिया गया है।

<asp:FileUpload runat="server" 
    onchange="alert('you selected the file: '+ this.value)" /> 

आप onchange हो सकता था पहले फ़ाइल अपलोड करें और उसके बाद फाइल का आकार दिखा एक लेबल अद्यतन करने के लिए एक ajax ट्रिगर। इसके साथ समस्या यह है कि यदि यह एक बड़ी फाइल है, तो यह उपयोगकर्ता को हाथ से पहले बताए जाने के उद्देश्य को हरा देती है कि इसमें काफी समय लगेगा।

यहाँ एक और सिफारिश है: वहाँ अपलोड करने से पहले फ़ाइल का आकार निर्धारित करने के लिए फ्लैश का उपयोग करता है एक jQuery प्लगइन है और यह बहुत उपयोग करने में आसान है। jQuery Uploadify

+1

इसे यहां देखें अगर वहाँ यानी क्लिक "ब्राउज़" और एक चयन कि FileUpload नियंत्रण के पाठ बॉक्स भाग भरता बनाने FileUpload के साथ जुड़े "प्रक्रिया को चुनने" (एक घटना हो जाएगा। इसके बाद शायद इस तरह मैं सोच रहा था एक कार्यक्रम जावास्क्रिप्ट का उपयोग करके पहली बार फॉर्म सबमिट कर सकता है। अपलोड बटन पर क्लिक होने पर एक दूसरा सबमिट तब होता है। क्या आप इस तरह की घटना के बारे में जानते हैं और यदि हां, तो क्या इसके पास FileUpload1.PostedFile.ContentLength प्रॉपर्टी तक पहुंच होगी? –

+0

धन्यवाद । इन अच्छे विचार के लिए मैं पहले से ही सिल्वरलाइट नियंत्रण में ध्यान दिया है विजुअल स्टूडियो 2005 में, वहाँ <एएसपी: FileUpload> के लिए कोई onchange घटना है।।। मैं जांच न की हो, तो VS2008 कि ​​समर्थन करता है –

+1

मैं देख रहा हूँ तुम क्या मतलब है .. नियंत्रण के इंटेलिजेंस/ऑब्जेक्ट मॉडल में इसकी कमी को अनदेखा करें। यहां जेनरेट किया गया HTML है: <इनपुट प्रकार = "फ़ाइल" नाम = "फ़ाइल अपलोड करें 1" id = "FileUpload1" onchange = "अलर्ट ('आपने फ़ाइल का चयन किया:' + e.value)" लेकिन अलर्ट फायरिंग नहीं है। –

संबंधित मुद्दे