我正在使用 iframe 上传图片。所以我有两个文件 - iframe 文件和将显示图像的文件。单击显示 iframe 的链接时,将运行此代码:
function ShowUploadImageOut(RecordID) {
$('#<%=hfPieceID.ClientID %>').val(RecordID);
$("#dvAddImageOutturn").html(
'<iframe id="iframeUpload" src="utilities/UploadPOD.aspx?id=uploadOutturn"></iframe>'
);
}
在 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;
}
}
}
FileNameHidden
将属性 clientidmode
设置为 "static"
:
<input type="hidden" id="FileNameHidden" runat="server" 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">
所以我不明白为什么它说长度为零
最佳答案
问题出在 onClientClick
的 btnPieceHubUpdateImage
上:
OnClientClick="CloseUploadWindow();
return GetPieceOutturnFilename();"
它先关闭窗口,然后尝试从 Iframe 保存 FileNameHidden
。交换它们以便调用 GetPieceOutturnFileName
首先解决了问题。
关于javascript - 无法从 iframe 中找到 FileHiddenName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34159319/