2012-03-13 10 views
26

मेरे पास FileUpload नियंत्रण है (और यह UpdatePanel के अंदर नहीं है) और इसकी hasFile संपत्ति हमेशा False है।FileUpload.hasFile हमेशा गलत है

<asp:FileUpload ID="certificateUploader" runat="server"/> 

कोई विचार?

+0

अपने प्रश्न में स्पष्ट रहें। जब मैं ब्राउज़ पर क्लिक करता हूं और फ़ाइल के लिए ब्राउज़ करता हूं, तो ठीक से – JayOnDotNet

+0

होता है, एक का चयन करें और खुले हिट करें, मैं फ़ाइल के पथ को फ़ाइल अपलोडर नियंत्रण पर देख सकता हूं, जब मैं सहेजें बटन दबाता हूं (मेरे ऐप के लिए अनुकूलित) मैं जांचता हूं कि क्या यह .hasFile यह हर बार झूठा लौटता है। –

+0

क्या आप यहां कुछ कोड पोस्ट कर सकते हैं – JayOnDotNet

उत्तर

10

आप AJAX => का उपयोग कर फ़ाइलों को अपलोड नहीं कर सकते हैं, आपको एक UpdatePanel के अंदर फ़ाइल अपलोड नियंत्रण नहीं रखना चाहिए क्योंकि यह UpdatePanel सर्वर पर AJAX अनुरोध भेजता है।

+1

कॉपी नहीं किया जा सका, मैंने updatepPanel से फ़ाइल अपलोड टैग हटा दिया। –

+0

+0

बढ़िया, और क्या इससे आपकी समस्या हल हुई? –

2

पूरे समय यह अपलोड करने की कोशिश कर रहे फ़ाइल पर मेरे पास अनुमतियों (या अधिक विशिष्ट नहीं होना चाहिए) के बारे में था, मैंने उपयोगकर्ता को पर्याप्त अनुमति दी और यह सब ठीक हो गया।

आपकी सहायता और पोस्ट के लिए बहुत बहुत धन्यवाद।

40

अपने UpdatePanel

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

यह एक पोस्टबैक जब अपलोड बटन क्लिक किया जाता है के लिए बाध्य करेगा के लिए एक ट्रिगर जोड़ें।

इसके अलावा

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

निश्चित रूप से इसे आज़माएगा :) –

+0

यह सही उत्तर होना चाहिए। – DarrylGodden

+4

केवल ट्रिगर जोड़ना मेरे लिए चाल है। धन्यवाद! – Dogahe

1

कभी कभी Page_Load के लिए नीचे पंक्ति जोड़ें FileUpload के साथ समस्या है। इसके बजाय यह आप साधारण इनपुट का उपयोग कर सकते हैं:

HttpPostedFile myFile = filMyFile.PostedFile;   
string fullPath=Server.MapPath("~/UploadDocuments/") + myFile.FileName; 
myFile.SaveAs(fullPath); 

और फ़ाइल अपने ASP.NET अनुप्रयोग में UploadDocuments फ़ोल्डर में बचत होगी (सर्वर)

0

आप:

<input id="filMyFile" type="file" runat="server"></input> 

कोड में सर्वर से फ़ाइल को सहेजने अपडेटपैनल से अपना बटन बंद करने का प्रयास कर सकते हैं; जहां तक ​​मुझे मिलता है, अपडेटपेनल हमेशा अपडेट होते हैं जब किसी अन्य अपडेट पैनल अपडेट के अंदर कुछ होता है, इसलिए यदि आपका बटन पोस्टबैक है, तो आपका फ़ाइल अपलोड नियंत्रण भी पोस्टबैक और फ़ाइल संदर्भ खो देता है।

9

मैंने फ़ाइल अपलोड नियंत्रण का उपयोग करके एक फ़ाइल भी अपलोड की है, लेकिन हैस्फ़ाइल संपत्ति झूठी हो गई है। अगर आप एक खाली फ़ाइल अपलोड करते हैं तो FileUpload.HasFile भी गलत है। इस मामले में आप जिस फ़ाइल को अपलोड करना चाहते हैं उसमें कुछ टेक्स्ट जोड़ना हैसफाइल संपत्ति को सही कर देगा।

+0

एक ही समस्या का सामना करना पड़ा। – Muhammedh

4

उदाहरण @dbFrameIT समर्थन के द्वारा दिए गए पूरक करने के लिए:

 <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Always" runat="server"> 
      <ContentTemplate> 
       <asp:FileUpload ID="FileUpload1" runat="server" /> 
       <asp:Button ID="UploadButton" runat="server" Text="Upload Selected File" OnClick="UploadButton_Click" /> 
       <asp:Label ID="UploadDetails" runat="server" Text=""></asp:Label> 
      </ContentTemplate> 
      <Triggers> 
       <asp:PostBackTrigger ControlID="UploadButton" /> 
      </Triggers> 
     </asp:UpdatePanel> 

अपने कोड के पीछे (ग #)

protected void UploadButton_Click(object sender, EventArgs e) 
    { 
     if (FileUpload1.HasFile == false) 
     { 
      UploadDetails.Text = "Please first select a file to upload..."; 
     } 
     else 
     { 
      string FileName = FileUpload1.FileName; 
      UploadDetails.Text = string.Format(
        @"Uploaded file: {0}<br /> 
       File size (in bytes): {1:N0}<br /> 
       Content-type: {2}", 
         FileName, 
         FileUpload1.FileBytes.Length, 
         FileUpload1.PostedFile.ContentType); 

      // Save the file 
      string filePath = Server.MapPath("~/Brochures/" + FileUpload1.FileName); 
      FileUpload1.SaveAs(filePath); 
     } 
    } 
संबंधित मुद्दे