这是我的fileupload控制页面的部分代码。这是我正在使用的那个。上传文件时,文件名,postedfile,一切都是空的。我也尝试了ajax文件上传。它显示错误“对象引用未设置为实例”。 Wat是我编码的问题吗?
<table>
<tr>
<td align="center">
<span class="txt">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:FileUpload ID="fpResumenew" runat="server" Visible="false" Width="226px" />
</ContentTemplate>
</asp:UpdatePanel>
</span>
</td>
</tr>
<tr>
<td align="center">
</td>
</tr>
<tr>
<td style="vertical-align: top" align="center">
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:Button ID="btnUpload" Font-Bold="true"
DisabledText="Processing..." Visible="false"
Text="Upload" BackColor="Maroon" ForeColor="White" runat="server" OnClick="btnUpload_Click" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>
</asp:UpdatePanel>
</td>
</tr>
</table>
protected void btnUpload_Click(object sender,EventArgs e)
{
string strname = fpResumenew.FileName.ToString();
if (fpResumenew.PostedFile.FileName.Trim().Length != 0)
{
byte[] binary = new byte[fpResumenew.PostedFile.ContentLength];
binary = fpResumenew.FileBytes;
string doc = fpResumenew.FileName;
string contenttype = fpResumenew.PostedFile.ContentType;
objservice1.UpdateResume(int.Parse(Session["LoginId"].ToString()), doc, binary, contenttype);
Response.Redirect("delresume.aspx?Action=U");
}
else
{
lblmsg.Text = "File is not Found";
lblmsg.Visible = true;
}
}
答案 0 :(得分:1)
尝试添加
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>
向您的第一个更新面板声明,而不是第二个更新面板。触发器需要位于包含FileUpload控件的面板中,而不是包含该按钮的控件。 PostBackTrigger强制定期回发文件上载,这是满足浏览器安全要求所需的。
答案 1 :(得分:0)
据我所知,FileUpload控件可以在不使用自己的“浏览...”按钮的情况下阻止上传文件。这是为了防止通过自动上传文件来滥用客户端文件系统。
唯一的解决方案是在控件上使用一个显示更好视图的图层,但保留使用浏览按钮或手动键入路径的可能性。
您可以在此处找到有关如何设置FileUpload样式的扩展解决方案:Link
答案 2 :(得分:0)
没有什么对我有用..问题是我在同一页面中使用了三个按钮。其他按钮初始化文件上载控件。因此,单击上载按钮时,文件名为空。所以,我使用了另一个页面来上传word文档。现在,它正在工作.. !!