2015-12-08 13 views
12

Bir görüntü yüklemek için iframe kullanıyorum. Yani iki dosyam var - iframe dosyası ve görüntüyü gösterecek dosya. iframe görüntülemek için bağlantı tıklandığında bu kod çalıştırılır: iframe üzerindeiframe'den FileHiddenName bulamıyor

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

bilgisayardaki bir klasöre görüntüyü kaydeder ve 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; 
     } 
    } 
} 
görüntü dosya adını ayarlar bir yükleme düğmesi Geri th görüntülemek için sayfadaki

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

:

FileNameHidden özelliği clientidmode seti "static" zorundadır e görüntüde bir kayıt düğmesi var. Bu düğme FileNameHidden değerini alır ve onu gizli bir alana ayarlar. Bu yeni gizli alan veritabanına dosya adını kaydetmek için kullanılır:

<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; 
} 

sorun GetPieceOutturnfile işlevi bulunmaktadır. $('#iframeUpload').contents().find('#FileNameHidden').length her zaman sıfırdır. Iframe'den FileNameHidden'u bulmalı. o uzunluk ben çalışmak var sıfır

cevap

6

sorun onClientClick için btnPieceHubUpdateImage oldu:

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

O Iframe'in dan FileNameHidden kurtarmaya çalışırken daha sonra ilk pencereyi kapatıyordu. Bunları takas etmek için önce GetPieceOutturnFileName numaralı telefonu arayarak sorunu çözdünüz.

3

diyor neden

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

Yani anlamıyorum: Ben FileNameHidden kesinlikle resmin adını alır kümesi görebilirsiniz kod geçiyor

bu kod Iframe (child.html) öğesine yüklenen içeriğin aynı etki alanında olduğundan veya güvenlik nedeniyle çalışmayacağından emin olun. Ayrıca, masaüstünüzdeki dosyaları çalıştırmaya çalışmayacaktır. Bir sunucudan sunulmaları gerekiyor.

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> 

Bu sorununuzu çözmeye yardımcı olmazsa, dosyaları veya jsfiddle sağlamalıdır.

+1

ok GetPieceOutturnFileName işlevini kodunuza düzenlemeyi denedim ancak "$ (" # iframeUpload ") içine girmiyor. load (function() {' yani iframe'yi bulamadığı anlamına mı geliyor? değiştir işlevimi – user123456789

+1

sorusuna yaptım Yük işlevi temel örneğimdi. Yüklü dosyaName, boş bırakıldı çünkü iframe içeriği hazır olduğunda yüklenmeye devam ediyordu. Uygulama, sorgunuzdaki rasgele kod parçacıklarına bakarak çalışır. Uygulamanızın temel bir sürümüne bağlantı sağlayabilseydiniz, bu sayede sorununuzu tanılamanız çok daha kolay hale gelirdi: –

+1

@ user123456789 Dosyalara baktım .Orada çok fazla var ve gerekli dependansa sahip olmadığından onu çalıştıramadım. Bir sorunla karşılaştığınız sayfanın temel bir html sürümünü oluşturarak senaryonuzu basitleştirmenizi tavsiye ederim. Yalnızca hata ayıklamaya çalıştığınız işlevselliği koruyun. Yukarıdaki cevaba benzer. Çalışmakta olan bir jsfiddle'ta problem yaşanırsa, insanlar sorunu hemen çözeceklerdir. –