这是我在网络表单中的位置:
<tr>
<td class="OnlyStandard">
<asp:Label ID="lCompanyLogoImageName" runat="server" AssociatedControlID="fupCompanyLogoImageName" CssClass ="smallfont">Company Logo:</asp:Label>
</td>
<td class="OnlyStandard">
<div>
<asp:FileUpload ID="fupCompanyLogoImageName" runat="server" CssClass ="smallfont"/>
<asp:Button ID="btnUploadLogo" runat="server" Text="Upload logo" OnClick="btnUploadLogo_Click"/>
<asp:HiddenField ID="hfTmpCompanyLogo" runat="server" />
</div>
</td>
<td></td>
</tr>
当我单击按钮btnUploadLogo时,由于某些原因,指示文件已加载的字段为false。我不知道为什么
protected void btnUploadLogo_Click(object sender, EventArgs e)
{
if (fupCompanyLogoImageName.**HasFile** && fupCompanyLogoImageName.PostedFile != null)
{
string[] validExtentions = { ".jpg", ".png", ".bmp", ".gif" };
string extPostFile = Path.GetExtension(fupCompanyLogoImageName.PostedFile.FileName);
bool flValidExt = false;
foreach (string ex in validExtentions)
if (extPostFile.ToUpper().Equals(ex.ToUpper()))
{
flValidExt = true;
break;
}
if (!flValidExt)
{
string tmp = "";
foreach (string str in validExtentions) tmp += str + " ";
Response.Write("<script type='text/javascript'>alert('" + String.Format(this.GetLocalizationString("ErrorMsg_NotCorrectFileExtentsion.Text"), tmp) + "')</script>");
return;
}
hfTmpCompanyLogo.Value = String.Format("{0}_{1}", Guid.NewGuid(), fupCompanyLogoImageName.FileName);
}
}
}
fupCompanyLogoImageName.HasFile为假-不清楚,因为已选择文件
文件名为St1.jpg-在图片上可以看到
答案 0 :(得分:2)
如果您的页面contains
是Update panel
,那么您首先需要trigger
upload button
到PostBackTrigger
来获得这样的文件名
<asp:ScriptManager ID="ScriptManager1" runat="server"/> </asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="btnUploadLogo" />
</Triggers>
<ContentTemplate>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUploadLogo" runat="server" Text="Upload" OnClick="UploadFile" />
</ContentTemplate>
</asp:UpdatePanel>