renisha
renisha

Reputation: 11

Object reference not set to an instance of an object

I keep getting the following error and I don't know how to fix it. Any help would be great please

Exception Details:NullReferenceException was unhandled by users code: Object reference not set to an instance of an object.

protected void LbUpload_Click(object sender, EventArgs e)
    {     
      ERROR: if(FileUpload.PostedFile.FileName == string.Empty)
        {

            LabelMsg.Visible = true;
            return;
        }
        else
    {
        string[] FileExt = FileUpload.FileName.Split('.');
        string FileEx = FileExt[FileExt.Length - 1];
        if (FileEx.ToLower() == "csv")
        {
            FileUpload.SaveAs(Server.MapPath("CSVLoad//" + FileUpload.FileName));
        }
        else
        {
            LabelMsg.Visible = true;
            return;
        }
    }
    CSVReader reader = new CSVReader(FileUpload.PostedFile.InputStream);
    string[] headers = reader.GetCSVLine();
    DataTable dt = new DataTable();
    foreach (string strHeader in headers)
    dt.Columns.Add(strHeader);
    string[] data;
    while ((data = reader.GetCSVLine()) != null)
    dt.Rows.Add(data);
    GridView1.DataSource = dt;
    GridView1.DataBind();
    if (FileUpload.HasFile)
        try
        {
            FileUpload.SaveAs(Server.MapPath("confirm//") +
            FileUpload.FileName);
            LabelGrid.Text = "File name: " +
            FileUpload.PostedFile.FileName + "<br>" +
            FileUpload.PostedFile.ContentLength + " kb<br>" +
            "Content type: " +
            FileUpload.PostedFile.ContentType + "<br><b>Uploaded Successfully";
        }
        catch (Exception ex)
        {
            LabelGrid.Text = "ERROR: " + ex.Message.ToString();

        }
    else
    {
        LabelGrid.Text = "You have not specified a file.";
    }
    File.Delete(Server.MapPath("confirm//" + FileUpload.FileName));
}

Upvotes: 0

Views: 3566

Answers (3)

Christian C. Salvad&#243;
Christian C. Salvad&#243;

Reputation: 828170

You are checking if the FileName is string.Empty, it sounds like you want to detect when the user clicked the button without selecting a file.

If that happens, the actual PostedFile property will be null (remember, the user didn't posted a file), you should use the FileUpload.HasFile property for that purpose:

protected void LbUpload_Click(object sender, EventArgs e)
{     
    if(FileUpload.HasFile)
    {

        LabelMsg.Visible = true;
        return;
    } 
    // ...
}

But I would recommend you also to add a RequiredFieldValidator.

More on validation:

Upvotes: 1

Adam Robinson
Adam Robinson

Reputation: 185703

Either FileUpload or its PostedFile property must be null.

Upvotes: 0

Russell
Russell

Reputation: 17737

Are you sure that FileUpload and FileUpload.PostedFile is not null?

Upvotes: 0

Related Questions