2009-04-03 13 views
17

के भीतर काम नहीं कर रहा है तो मैं जो करने का प्रयास कर रहा हूं, क्या उपयोगकर्ता अपलोड करने के लिए एक फ़ाइल का चयन करता है। चूंकि मैं केवल छवियों को स्वीकार करने जा रहा हूं, इसलिए मैं विस्तार का परीक्षण करूंगा। मैं फ़ाइल आकार को 2 एमबी से कम करना चाहता हूं, इसलिए मैं इसका परीक्षण करूंगा (अभी तक कोड में लागू नहीं किया गया है)। अगर वे फ़ाइल पास कर चुके हैं, तो मैं लेबल को "फ़ाइल स्वीकृत" कहूंगा, और बाद में बटन क्लिक के लिए फ़ाइल अपलोड जानकारी संग्रहीत करूं। यह तब होगा जब उपयोगकर्ता ने शेष फॉर्म भरना समाप्त कर दिया होगा। आखिरकार, मैं पृष्ठ पर एक अद्यतन प्रोग्रेस नियंत्रण डाल दूंगा, जबकि यह जांच कर रहा है कि फ़ाइल की अनुमति है या नहीं। मैं इसके लिए इसे वापस पोस्ट नहीं करना चाहूंगा, इसलिए यदि मैं इसे काम पर ला सकता हूं, तो यह बहुत अच्छा होगा। बीटीडब्लू, अगर मैं अपडेट पैनल से लेबल लेता हूं तो यह सब ठीक काम करेगा।FileUpload अद्यतन पैनल

जब मैं इसे चलाता हूं तो क्या होता है, क्या यह पहले के दूसरे कथन पर जाएगा और "कृपया एक फ़ाइल चुनें"। मतलब है कि FileUpload1.HasFile झूठी लौट रहा है। एकमात्र कारण यह है कि मैं देख सकता हूं कि यह हो रहा है क्योंकि UpdatePanel FileUpload नियंत्रण से उस जानकारी तक नहीं पहुंच सकता है?

पीछे कोड:

Label SubmitButtonLabel2= (Label)UpdatePanel1.FindControl("SubmitButtonLabel"); 
    if (FileUpload1.HasFile) 
    { 
     string[] fileName = FileUpload1.FileName.Split('.'); 
     if ((fileName[fileName.Length - 1] == "jpg") || 
      (fileName[fileName.Length - 1] == "gif") || 
      (fileName[fileName.Length - 1] == "bmp") || 
      (fileName[fileName.Length - 1] == "jpeg") || 
      (fileName[fileName.Length - 1] == "png")) 
     { 
      SubmitButtonLabel2.Text = "File Accepted."; 
     } 
     else 
     { 
      SubmitButtonLabel2.Text = "File type not allowed. Please choose another."; 
     } 
    } 
    else 
    { 
     SubmitButtonLabel.Text = "Please select a file."; 
    } 

पृष्ठ:

<body> 
<form id="form1" runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
    <div> 
     <asp:FileUpload ID="FileUpload1" runat="server" /> 
     <asp:Button ID="SubmitButton" runat="server" Text="Submit File" OnClick=SubmitButton_Click /> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="always"> 
      <ContentTemplate> 
       <asp:Label ID="SubmitButtonLabel" runat="Server" /> 
      </ContentTemplate> 
      <Triggers> 
       <asp:PostBackTrigger ControlID="SubmitButton" /> 
      </Triggers> 
     </asp:UpdatePanel> 

    </div> 
</form> 
</body> 

उत्तर

0

मेरा अनुमान होगा कि HasFile केवल जब यह पोस्ट पहले, किया जाता है नहीं है कि इससे पहले कि भरे जाएंगे।

आप यह जांचना चाहेंगे कि फ़ाइल अपलोड होने से पहले FileUpload1.FileName पहले से भर चुका है या नहीं, लेकिन मुझे इसमें कोई संदेह नहीं है।

3

मत भूलना फ़ाइल अपलोड अनुमति देने के लिए फार्म के प्रकार बदलने के लिए, (enctype या ऐसा ही कुछ, मैं दृश्य स्टूडियो के सामने नहीं कर रहा हूँ ताकि सटीक नहीं हो सकता है।)

मैं एक ही समस्या थी।

+0

यह अभी भी मदद नहीं करेगा। एक अद्यतन पैनल में फ़ाइल अपलोड करने का कार्यात्मक रूप से वर्कअराउंड के बिना अक्षम किया जाता है। – Gthompson83

1

You're answer can be found here

यह मूल रूप से, क्योंकि जावास्क्रिप्ट और ब्राउज़र सुरक्षा कारणों की डिफ़ॉल्ट रूप से अनुमति नहीं है। लेकिन यह एक कामकाज है।

23

कुछ भी करने की आवश्यकता नहीं है, आपको बस अपने फॉर्म में मल्टीपार्ट डेटा विशेषता जोड़ने की आवश्यकता है।

 
Page.Form.Attributes.Add("enctype", "multipart/form-data"); 
 

अधिक जानकारी के लिए निम्न लिंक देखें।

http://knowledgebaseworld.blogspot.com/2009/02/file-upload-not-working-with-update.html

+1

आप एक जीवन बचतकर्ता हैं। – kerbasaurus

+0

धन्यवाद, खुशी है कि यह आपकी समस्या हल! –

4

डिफ़ॉल्ट asp.net FileUpload नियंत्रण UpdatePanel के साथ काम कभी नहीं होगा। आपको AjaxControl टूलकिट में परिभाषित विशेष AsyncFileUpload नियंत्रण की आवश्यकता है।यह

http://www.asp.net/ajax/ajaxcontroltoolkit/samples/AsyncFileUpload/AsyncFileUpload.aspx

alt text http://ruchitsurati.net/files/fileupload.png

<ajaxToolkit:AsyncFileUpload OnClientUploadError="uploadError" 
    OnClientUploadComplete="uploadComplete" runat="server" 
    ID="AsyncFileUpload1" Width="400px" UploaderStyle="Modern" 
    UploadingBackColor="#CCFFFF" ThrobberID="myThrobber" /> 
8

अपने page_load

ScriptManager.GetCurrent(this).RegisterPostBackControl(this.Button); 
3

में इस लाइन जोड़े अपलोड पैनल कुछ के ट्रिगर के रूप में फाइल को अपलोड करने के लिए बटन पर क्लिक करें इस तरह,

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
<ContentTemplate> 
<asp:Panel ID="pnlUploadImage" runat="server"> 
<asp:FileUpload ID="fuldImage" runat="server"></asp:FileUpload> 


     <asp:LinkButton ID="lnkbUpload" runat="server" onclick="lnkbUpload_Click">Add</asp:LinkButton> 
</asp:Panel> 



</ContentTemplate> 
<Triggers> 
<asp:PostBackTrigger ControlID="lnkbUpload"/></Triggers> 
</asp:UpdatePanel> 
2

Page.Form.Attributes.Add("enctype", "multipart/form-data");

केवल आपकी समस्या को इस में मदद मिलेगी कर

उल्लेख this

5

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

अब कोड के बाद मेरे पास अपलोड फ़ोल्डर में फ़ाइल को सहेजने के लिए btnSave बटन है। इसलिए मैंने इसके लिए पोस्टबैक्रिगर सेट किया।

<Triggers> 
      <asp:PostBackTrigger ControlID="btnSave" /> 
</Triggers> 

आशा है कि यह आपकी मदद करेगा।

12
<Triggers> 
    <asp:PostBackTrigger ControlID="YourControlID" /> 
</Triggers> 

UpdatePanel के लिए ट्रिगर जोड़ें और ControlID दे। यदि आप TabContainer का उपयोग कर रहे हैं, तो टैब कंटेनर की आईडी का उपयोग करें।

+2

यह मेरे लिए काम किया ... यहां पर एक छोटा सा लेख है। http://www.aspsnippets.com/Articles/Using-FileUpload-Control-inside-ASP.Net-AJAX-UpdatePanel-Control.aspx – Muhammedh

2

मुझे यहां पोस्ट किए गए दो समाधानों का उपयोग करने के बाद यह काम मिल गया।

मैं अद्यतन पैनल के लिए मार्कअप पर Page_Load पर दोनों

Page.Form.Attributes.Add("enctype", "multipart/form-data"); 

जोड़ने के लिए के रूप में

<Triggers> 
    <asp:PostBackTrigger ControlID="btnUpload" /> 
</Triggers> 

भी था।

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