iframe

2015-12-08 13 views
12

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

function ShowUploadImageOut(RecordID) { 
    $('#<%=hfPieceID.ClientID %>').val(RecordID); 
    $("#dvAddImageOutturn").html(
     '<iframe id="iframeUpload" src="utilities/UploadPOD.aspx?id=uploadOutturn"></iframe>' 
    ); 
} 

आइफ्रेम पर एक अपलोड बटन है कि कंप्यूटर पर किसी फ़ोल्डर के लिए छवि बचाता है और FileNameHidden

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    if (fuUpload.HasFile) 
    { 
     if (Request.QueryString["id"] == "uploadOutturn") 
     { 
      String Path = ConfigurationManager.AppSettings["PieceOutturnFolder"].ToString() 
       + Company.Current.CompCode; 
      string FileName = fuUpload.FileName; 

      if (File.Exists(Path + "/" + FileName)) 
      { 
       File.Delete(Path + "/" + FileName); 
      } 

      fuUpload.SaveAs(Path + "/" + FileName); 
      filename = FileName; 
      imgTemp.ImageUrl = "/thumbnail.ashx?ImgFilePath=" + Path.Replace("/", "\\") 
       + "\\" + FileName + @"&width=200&height=400"; 
      FileNameHidden.Value = FileName; 
     } 
    } 
} 
करने के लिए छवि फ़ाइल नाम सेट करता है

<input type="hidden" id="FileNameHidden" runat="server" clientidmode="Static" /> 

वें प्रदर्शित करने के लिए पृष्ठ पर वापस

FileNameHidden संपत्ति clientidmode सेट "static" गया है ई छवि एक बचत बटन है। यह बटन FileNameHidden से मान लेता है और इसे एक छिपे हुए क्षेत्र में सेट करता है। इस नए छिपे हुए फ़ील्ड डेटाबेस के लिए फ़ाइल नाम को बचाने के लिए प्रयोग किया जाता है:

<asp:HiddenField ID="hfUploadedPieceHubImageFile" runat="server" /> 

<div id="dvAddEditImageOutturn" class="dvdraggable"> 
    <div id="dvAddImageOutturn"></div> 

    <asp:LinkButton ID="btnPieceHubUpdateImage" 
     onclick="btnUpdatePieceImage_Click" 
     OnClientClick="CloseUploadWindow();return GetPieceOutturnFilename();" 
     CssClass="btnSaveSmall" 
     runat="server" 
    ></asp:LinkButton> 
</div> 

function GetPieceOutturnFilename() { 
    if ($('#iframeUpload').contents().find('#FileNameHidden').length > 0) { 
     $("#<%= hfUploadedPieceHubImageFile.ClientID %>").val(
      $('#iframeUpload').contents().find('#FileNameHidden').val() 
     ); 
    } 
    return true; 
} 

समस्या GetPieceOutturnfile समारोह में है। $('#iframeUpload').contents().find('#FileNameHidden').length हमेशा शून्य है। यह iframe से FileNameHidden खोजना चाहिए।

कोड के माध्यम से जा रहे हैं मैं देख सकता हूँ FileNameHidden निश्चित रूप से छवि का नाम सेट हो जाता है:

<input name="FileNameHidden" type="hidden" id="FileNameHidden" value="test.jpg"> 

तो मुझे समझ नहीं आता क्यों यह कहते लंबाई शून्य

उत्तर

6

समस्या onClientClick के लिए btnPieceHubUpdateImage के साथ था:

OnClientClick="CloseUploadWindow(); 
return GetPieceOutturnFilename();" 

यह पहली विंडो बंद करने गया था तो Iframe से FileNameHidden को बचाने की कोशिश। इन्हें चारों ओर स्वैप करना ताकि GetPieceOutturnFileName पर पहली बार समस्या हल हो जाए।

3

मैं इसके साथ काम कर गया है यह कोड सुनिश्चित करें कि iframe (child.html) में लोड की गई सामग्री एक ही डोमेन पर है या यह सुरक्षा कारणों से काम नहीं करेगी। साथ ही, यह आपके डेस्कटॉप पर फ़ाइलों को चलाने में काम नहीं करेगा। उन्हें एक सर्वर से सेवा की जरूरत है।

index.html

<!DOCTYPE html> 
<html> 
<head> 
    <script src="https://code.jquery.com/jquery-1.11.3.js"></script> 
    <script> 
    $(document).ready(function() { 
     $("#iframeUpload").load(function() { 
     var fileName = $(this).contents().find("#FileNameHidden").val(); 
     console.log(fileName); 
     }); 
    }); 
    </script> 
</head> 
<body> 
    <iframe id="iframeUpload" src="child.html" /> 
</body> 
</html> 

child.html

<!DOCTYPE html> 
<html lang="en"> 
    <head></head> 
    <body> 
    <form> 
     <input name="FileNameHidden" type="hidden" id="FileNameHidden" style="display:none" value="test.jpg"> 
    </form> 
    </body> 
</html> 

तो इससे आपकी समस्या का समाधान करने में मदद नहीं करता है, आप फाइल या एक jsfiddle प्रदान करना चाहिए।

+1

ठीक है मैंने आपके कोड पर GetPieceOutturnFileName फ़ंक्शन को संपादित करने का प्रयास किया है, लेकिन यह '$ (" # iframeUpload ") में नहीं जाता है। लोड (फ़ंक्शन() {' तो क्या इसका मतलब यह है कि यह iframe नहीं ढूंढ रहा है? मैंने जोड़ा मेरे प्रश्न पर फ़ंक्शन में किए गए परिवर्तन – user123456789

+1

लोड फ़ंक्शन मेरे मूल उदाहरण की आवश्यकता थी। फ़ाइल लोड किए बिना नाम शून्य हो जाएगा क्योंकि तैयार होने पर iframe सामग्री अभी भी लोड हो रही है। मेरे लिए यह कहना मुश्किल है कि आपका एप्लिकेशन आपके प्रश्न में यादृच्छिक कोड स्निपेट देखकर काम करता है। यदि आप अपने आवेदन के मूल संस्करण के लिए एक लिंक प्रदान कर सकते हैं तो यह लोगों को आपकी समस्या का निदान करने में बहुत आसान बना देगा। –

+1

@ user123456789 मैंने फ़ाइलों पर एक नज़र डाली ।वहां बहुत कुछ है और मैं आवश्यक निर्भरताओं के कारण इसे चलाने में असमर्थ था। मैं उस पृष्ठ के मूल HTML संस्करण का निर्माण करके अपने परिदृश्य को सरल बनाने की अनुशंसा करता हूं जिसके साथ आपको कोई समस्या है। केवल उस कार्यक्षमता को रखें जिसे आप डीबग करने का प्रयास कर रहे हैं। उपरोक्त मेरे उत्तर के समान। यदि आप काम कर रहे jsfiddle में समस्या उत्पन्न कर सकते हैं, तो लोग शायद इस मुद्दे को तुरंत समझ लेंगे। –