文件上传错误

时间:2009-12-21 05:15:13

标签: c# asp.net file-upload

这是我的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">
            &nbsp;
        </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;

    }  


}

3 个答案:

答案 0 :(得分:1)

尝试添加

<Triggers>
   <asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>

向您的第一个更新面板声明,而不是第二个更新面板。触发器需要位于包含FileUpload控件的面板中,而不是包含该按钮的控件。 PostBackTrigger强制定期回发文件上载,这是满足浏览器安全要求所需的。

答案 1 :(得分:0)

据我所知,FileUpload控件可以在不使用自己的“浏览...”按钮的情况下阻止上传文件。这是为了防止通过自动上传文件来滥用客户端文件系统。

唯一的解决方案是在控件上使用一个显示更好视图的图层,但保留使用浏览按钮或手动键入路径的可能性。

您可以在此处找到有关如何设置FileUpload样式的扩展解决方案:Link

答案 2 :(得分:0)

没有什么对我有用..问题是我在同一页面中使用了三个按钮。其他按钮初始化文件上载控件。因此,单击上载按钮时,文件名为空。所以,我使用了另一个页面来上传word文档。现在,它正在工作.. !!